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一樣