HashSet是實作Set介面的物件,Set容器中的物件都是唯一的

HashSet

1import java.util.Set;
2import java.util.HashSet;
3import java.util.Iterator;
4 
5public 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

1import java.util.Set;
2import java.util.LinkedHashSet;
3import java.util.Iterator;
4 
5public 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一樣

Categories: Java