Java的集合set中HashSet、LinkedHashSet、TreeSet用法比較
阿新 • • 發佈:2019-02-02
HashSet:
- 底層實現是通過HashMap儲存元素,HashSet的元素是儲存在HashMap的Key中,而value統一使用一個object物件
- 使用key保證了唯一性,但不保證順序
- 執行緒不安全,儲存速度快
Set<String> hashSet = new HashSet<>(); hashSet.add("one"); hashSet.add("two"); hashSet.add("three"); hashSet.add("four"); System.out.println(hashSet); //結果 [two, one, three, four]
LinkedHashSet:
- 與HashSet相比,保證了資料插入的順序
Set<String> linkedSet = new LinkedHashSet<>();
linkedSet.add("one");
linkedSet.add("two");
linkedSet.add("three");
linkedSet.add("four");
System.out.println(linkedSet);
//結果
[one, two, three, four]
TreeSet
- 與HashSet相比,TreeSet是可以確保元素 處於排序狀態,預設是按照元素對的自然排序(升序排列)
- 底層實現是紅黑樹的資料結構
- 如果一個物件需要使用TreeSet來儲存,則該物件必須實現Comparable介面
Set<String> treeSet = new TreeSet<>();
treeSet.add("one");
treeSet.add("two");
treeSet.add("three");
treeSet.add("four");
System.out.println(treeSet);
//結果
[four, one, three, two]