HashSet是實作Set介面的物件,Set容器中的物件都是唯一的
HashSet
1 | import java.util.Set; |
2 | import java.util.HashSet; |
3 | import java.util.Iterator; |
4 |
5 | public class test |
6 | { |
7 | public static void main(String [] argv) |
8 | { |
9 | Set<String> set = new HashSet<String>(); |
10 | |
11 | set.add( "張三" ); |
12 | set.add( "王五" ); |
13 | set.add( "李四" ); |
14 | set.add( "張三" ); |
15 | |
16 | //建立Iterator,Iterator的是針對在不同的物件(陣列、鏈結、雜湊集合)的公開存取介面 |
17 | //Iterator會先到物件內部收集資料再回傳到Iterator |
18 | Iterator iterator = set.iterator(); |
19 | while (iterator.hasNext()) { |
20 | System.out.print(iterator.next() + " " ); |
21 | } |
22 | } |
23 | } |
這段程式會顯示出:李四 王五 張三。
其中張三輸入了兩次,所以第二次輸入張三時,會判定已有這個物件
至於順序不一樣是因為HashSet的順序是利用Hash Table排序過的,所以會與當初輸入時不一樣
如果要讓set順序與輸入時相同,可以使用LinkedHashSet
1 | import java.util.Set; |
2 | import java.util.LinkedHashSet; |
3 | import java.util.Iterator; |
4 |
5 | public class test |
6 | { |
7 | public static void main(String [] argv) |
8 | { |
9 | Set<String> set = new LinkedHashSet<String>(); |
10 | |
11 | set.add( "張三" ); |
12 | set.add( "王五" ); |
13 | set.add( "李四" ); |
14 | set.add( "張三" ); |
15 | |
16 | //建立Iterator,Iterator的是針對在不同的物件(陣列、鏈結、雜湊集合)的公開存取介面 |
17 | //Iterator會先到物件內部收集資料再回傳到Iterator |
18 | Iterator iterator = set.iterator(); |
19 | while (iterator.hasNext()) { |
20 | System.out.print(iterator.next() + " " ); |
21 | } |
22 | } |
23 | } |
他的走訪就會跟LinkedList一樣