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

HashSet

import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;

public class test
{
	public static void main(String [] argv)
	{
		Set<String> set = new HashSet<String>();
		
		set.add("張三");
		set.add("王五");
		set.add("李四");
		set.add("張三");
		
		//建立Iterator,Iterator的是針對在不同的物件(陣列、鏈結、雜湊集合)的公開存取介面
		//Iterator會先到物件內部收集資料再回傳到Iterator
		Iterator iterator = set.iterator();
        while(iterator.hasNext()) {
            System.out.print(iterator.next() + " ");
        }
	}
}

這段程式會顯示出:李四 王五 張三。
其中張三輸入了兩次,所以第二次輸入張三時,會判定已有這個物件
至於順序不一樣是因為HashSet的順序是利用Hash Table排序過的,所以會與當初輸入時不一樣

如果要讓set順序與輸入時相同,可以使用LinkedHashSet

import java.util.Set;
import java.util.LinkedHashSet;
import java.util.Iterator;

public class test
{
	public static void main(String [] argv)
	{
		Set<String> set = new LinkedHashSet<String>();
		
		set.add("張三");
		set.add("王五");
		set.add("李四");
		set.add("張三");
		
		//建立Iterator,Iterator的是針對在不同的物件(陣列、鏈結、雜湊集合)的公開存取介面
		//Iterator會先到物件內部收集資料再回傳到Iterator
		Iterator iterator = set.iterator();
        while(iterator.hasNext()) {
            System.out.print(iterator.next() + " ");
        }
	}
}

他的走訪就會跟LinkedList一樣

Categories: Java