Java中的Set操作

來源:互聯網
上載者:User

首先看一個例子:

Set operations: union(並集), intersection(交集),asymetric difference(非對稱差集), symmetric difference(對稱差集), is subset(子集), is superset(超集)

import java.util.Set;<br />import java.util.TreeSet;<br />public class SetTest {<br /> public static <T> Set<T> union(Set<T> setA, Set<T> setB) {<br /> Set<T> tmp = new TreeSet<T>(setA);<br /> tmp.addAll(setB);<br /> return tmp;<br /> }<br /> public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) {<br /> Set<T> tmp = new TreeSet<T>();<br /> for (T x : setA)<br /> if (setB.contains(x))<br /> tmp.add(x);<br /> return tmp;<br /> }</p><p> public static <T> Set<T> intersection2(Set<T> setA, Set<T> setB) {<br /> Set<T> tmp = new TreeSet<T>(setA);<br /> tmp.retainAll(setB);<br /> return tmp;<br /> }<br /> public static <T> Set<T> difference(Set<T> setA, Set<T> setB) {<br /> Set<T> tmp = new TreeSet<T>(setA);<br /> tmp.removeAll(setB);<br /> return tmp;<br /> }<br /> public static <T> Set<T> symDifference(Set<T> setA, Set<T> setB) {<br /> Set<T> tmpA;<br /> Set<T> tmpB;<br /> tmpA = union(setA, setB);<br /> tmpB = intersection(setA, setB);<br /> return difference(tmpA, tmpB);<br /> }<br /> public static <T> boolean isSubset(Set<T> setA, Set<T> setB) {<br /> return setB.containsAll(setA);<br /> }<br /> public static <T> boolean isSuperset(Set<T> setA, Set<T> setB) {<br /> return setA.containsAll(setB);<br /> }<br /> public static void main(String args[]) {<br /> TreeSet<Character> set1 = new TreeSet<Character>();<br /> TreeSet<Character> set2 = new TreeSet<Character>();<br /> set1.add('A');<br /> set1.add('B');<br /> set1.add('C');<br /> set1.add('D');<br /> set2.add('C');<br /> set2.add('D');<br /> set2.add('E');<br /> set2.add('F');<br /> System.out.println("set1: " + set1);<br /> System.out.println("set2: " + set2);<br /> System.out.println("Union: " + union(set1, set2));<br /> System.out.println("Intersection: " + intersection(set1, set2));<br /> System.out.println("Intersection2: " + intersection2(set1, set2));<br /> System.out.println("Difference (set1 - set2): " + difference(set1, set2));<br /> System.out.println("Symmetric Difference: " + symDifference(set1, set2));<br /> TreeSet<Character> set3 = new TreeSet<Character>(set1);<br /> set3.remove('D');<br /> System.out.println("set3: " + set3);<br /> System.out.println("Is set1 a subset of set2? " + isSubset(set1, set3));<br /> System.out.println("Is set1 a superset of set2? " + isSuperset(set1, set3));<br /> System.out.println("Is set3 a subset of set1? " + isSubset(set3, set1));<br /> System.out.println("Is set3 a superset of set1? " + isSuperset(set3, set1));<br /> }<br />}

這裡很重要的是,一些集合操作會修改原創組合,比如addAll,retainAll,removeAll。尤其是你要重複操作原創組合的時候,一定要建立一個集合,new 

TreeSet<T>

(

orginalSet

)。


 

參考:

http://www.java2s.com/Code/Java/Collections-Data-Structure/Set.htm

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.