生活随笔
收集整理的這篇文章主要介紹了
Java中的Set操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先看一個例子:
Set operations: union(并集), intersection(交集),asymetric difference(非對稱差集), symmetric difference(對稱差集), is subset(子集), is superset(超集)
[java]?view plaincopy
import?java.util.Set;?? import?java.util.TreeSet;?? public?class?SetTest?{?? ??public?static?<T>?Set<T>?union(Set<T>?setA,?Set<T>?setB)?{?? ????Set<T>?tmp?=?new?TreeSet<T>(setA);?? ????tmp.addAll(setB);?? ????return?tmp;?? ??}?? ??public?static?<T>?Set<T>?intersection(Set<T>?setA,?Set<T>?setB)?{?? ????Set<T>?tmp?=?new?TreeSet<T>();?? ????for?(T?x?:?setA)?? ??????if?(setB.contains(x))?? ????????tmp.add(x);?? ????return?tmp;?? ??}?? ???? ??public?static?<T>?Set<T>?intersection2(Set<T>?setA,?Set<T>?setB)?{?? ????????Set<T>?tmp?=?new?TreeSet<T>(setA);?? ????????tmp.retainAll(setB);?? ????????return?tmp;?? ??}?? ??public?static?<T>?Set<T>?difference(Set<T>?setA,?Set<T>?setB)?{?? ????Set<T>?tmp?=?new?TreeSet<T>(setA);?? ????tmp.removeAll(setB);?? ????return?tmp;?? ??}?? ??public?static?<T>?Set<T>?symDifference(Set<T>?setA,?Set<T>?setB)?{?? ????Set<T>?tmpA;?? ????Set<T>?tmpB;?? ????tmpA?=?union(setA,?setB);?? ????tmpB?=?intersection(setA,?setB);?? ????return?difference(tmpA,?tmpB);?? ??}?? ??public?static?<T>?boolean?isSubset(Set<T>?setA,?Set<T>?setB)?{?? ????return?setB.containsAll(setA);?? ??}?? ??public?static?<T>?boolean?isSuperset(Set<T>?setA,?Set<T>?setB)?{?? ????return?setA.containsAll(setB);?? ??}?? ??public?static?void?main(String?args[])?{?? ????TreeSet<Character>?set1?=?new?TreeSet<Character>();?? ????TreeSet<Character>?set2?=?new?TreeSet<Character>();?? ????set1.add('A');?? ????set1.add('B');?? ????set1.add('C');?? ????set1.add('D');?? ????set2.add('C');?? ????set2.add('D');?? ????set2.add('E');?? ????set2.add('F');?? ????System.out.println("set1:?"?+?set1);?? ????System.out.println("set2:?"?+?set2);?? ????System.out.println("Union:?"?+?union(set1,?set2));?? ????System.out.println("Intersection:?"?+?intersection(set1,?set2));?? ????System.out.println("Intersection2:?"?+?intersection2(set1,?set2));?? ????System.out.println("Difference?(set1?-?set2):?"?+?difference(set1,?set2));?? ????System.out.println("Symmetric?Difference:?"?+?symDifference(set1,?set2));?? ????TreeSet<Character>?set3?=?new?TreeSet<Character>(set1);?? ????set3.remove('D');?? ????System.out.println("set3:?"?+?set3);?? ????System.out.println("Is?set1?a?subset?of?set2??"?+?isSubset(set1,?set3));?? ????System.out.println("Is?set1?a?superset?of?set2??"?+?isSuperset(set1,?set3));?? ????System.out.println("Is?set3?a?subset?of?set1??"?+?isSubset(set3,?set1));?? ????System.out.println("Is?set3?a?superset?of?set1??"?+?isSuperset(set3,?set1));?? ??}?? }??
這里很重要的是,一些集合操作會修改原始集合,比如addAll,retainAll,removeAll。尤其是你要重復操作原始集合的時候,一定要新建一個集合,new??TreeSet<T>?(?orginalSet?)。
總結
以上是生活随笔為你收集整理的Java中的Set操作的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。