一、Set集合簡介
Set是Java集合框架下的一個集合接口,用於存儲不可重複的元素,即每個元素都是唯一的。Set常用的實現類有HashSet、LinkedHashSet和TreeSet。
二、遍歷Set集合的方法
1. 迭代器遍歷
迭代器是一種用於訪問集合元素的接口,通過迭代器可以按某種順序依次訪問集合中的每個元素。
Set<String> set = new HashSet<>(); set.add("apple"); set.add("orange"); set.add("banana"); Iterator<String> it = set.iterator(); while(it.hasNext()) { String str = it.next(); System.out.println(str); }
代碼解釋:
首先創建一個HashSet集合,然後向集合中添加三個元素。接着使用iterator()方法獲取集合的迭代器對象,使用while循環和hasNext()方法判斷是否還有下一個元素,如果存在則使用next()方法獲取下一個元素。
2. 增強的for循環遍歷
Java SE5及以上版本提供了一種方便的方式遍歷集合,即增強的for循環。增強的for循環可以按照集合元素的迭代順序依次訪問每個元素。
Set<String> set = new HashSet<>(); set.add("apple"); set.add("orange"); set.add("banana"); for(String str : set) { System.out.println(str); }
代碼解釋:
與前面的例子相同,首先創建一個HashSet集合併向集合中添加三個元素。接着使用增強的for循環依次遍歷集合中的元素,將元素賦值給str變量,然後輸出。
3. Lambda表達式遍歷
Java 8引入的Lambda表達式可以使用更簡單的方式遍歷集合,並且還支持並行處理。
Set<String> set = new HashSet<>(); set.add("apple"); set.add("orange"); set.add("banana"); set.forEach(str -> System.out.println(str));
代碼解釋:
首先創建一個HashSet集合併向集合中添加三個元素。接着使用forEach()方法遍歷集合中的元素,Lambda表達式中的str即是集合中的元素,然後輸出。
三、Set集合元素排序
1. HashSet集合不排序
HashSet不保證元素的順序,元素的位置可能隨時被修改。如果需要對元素排序,可以使用TreeSet或LinkedHashSet。
Set<String> set = new HashSet<>(); set.add("apple"); set.add("orange"); set.add("banana"); for(String str : set) { System.out.println(str); }
代碼解釋:
同樣先創建一個HashSet集合併向集合中添加三個元素。使用增強的for循環遍歷集合輸出元素,由此可以看出HashSet集合是不排序的。
2. TreeSet集合排序
TreeSet集合可以按照元素的自然排序(從小到大)或者指定的Comparator排序。
Set<String> set = new TreeSet<>(); set.add("apple"); set.add("orange"); set.add("banana"); for(String str : set) { System.out.println(str); }
代碼解釋:
同樣先創建一個TreeSet集合併向集合中添加三個元素。使用增強的for循環遍歷集合輸出元素,由此可以看出TreeSet集合是按照元素的自然排序進行排序的。
3. LinkedHashSet集合插入順序排序
LinkedHashSet集合可以按照元素被插入的順序進行排序,插入的新元素會被放在集合中最後一個元素的後面。
Set<String> set = new LinkedHashSet<>(); set.add("apple"); set.add("orange"); set.add("banana"); for(String str : set) { System.out.println(str); }
代碼解釋:
同樣先創建一個LinkedHashSet集合併向集合中添加三個元素。使用增強的for循環遍歷集合輸出元素,可以發現集合中的元素順序與插入順序一致。
四、Set集合的並集、交集和差集操作
1. 並集操作
Set集合的並集操作可以將兩個集合中的所有不同元素合併到一個新的集合中。可以使用addAll()方法實現。
Set<String> set1 = new HashSet<>(); set1.add("apple"); set1.add("orange"); set1.add("banana"); Set<String> set2 = new HashSet<>(); set2.add("pear"); set2.add("banana"); set2.add("peach"); Set<String> unionSet = new HashSet<>(set1); unionSet.addAll(set2); for(String str : unionSet) { System.out.println(str); }
代碼解釋:
先創建兩個HashSet集合set1和set2,並向集合中添加元素。然後通過set1創建一個新的HashSet集合unionSet,並使用addAll()方法將set2中的所有元素加入到unionSet中,這樣就得到了兩個集合的並集。使用增強的for循環遍歷unionSet輸出元素。
2. 交集操作
Set集合的交集操作可以獲取兩個集合中的共同元素。可以使用retainAll()方法實現。
Set<String> set1 = new HashSet<>(); set1.add("apple"); set1.add("orange"); set1.add("banana"); Set<String> set2 = new HashSet<>(); set2.add("pear"); set2.add("banana"); set2.add("peach"); Set<String> intersectionSet = new HashSet<>(set1); intersectionSet.retainAll(set2); for(String str : intersectionSet) { System.out.println(str); }
代碼解釋:
先創建兩個HashSet集合set1和set2,並向集合中添加元素。然後通過set1創建一個新的HashSet集合intersectionSet,並使用retainAll()方法獲取set1和set2中共同的元素,這樣就得到了兩個集合的交集。使用增強的for循環遍歷intersectionSet輸出元素。
3. 差集操作
Set集合的差集操作可以獲取在集合A中出現但是不在集合B中出現的元素。可以使用removeAll()方法實現。
Set<String> set1 = new HashSet<>(); set1.add("apple"); set1.add("orange"); set1.add("banana"); Set<String> set2 = new HashSet<>(); set2.add("pear"); set2.add("banana"); set2.add("peach"); Set<String> differenceSet = new HashSet<>(set1); differenceSet.removeAll(set2); for(String str : differenceSet) { System.out.println(str); }
代碼解釋:
先創建兩個HashSet集合set1和set2,並向集合中添加元素。然後通過set1創建一個新的HashSet集合differenceSet,並使用removeAll()方法獲取在set1中出現但是不在set2中出現的元素,這樣就得到了set1和set2的差集。使用增強的for循環遍歷differenceSet輸出元素。
原創文章,作者:TCGAW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/343224.html