1. 程式人生 > >Java的集合set中HashSet、LinkedHashSet、TreeSet用法比較

Java的集合set中HashSet、LinkedHashSet、TreeSet用法比較

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]