數組和集合(三):Set集合的使用總結


一、概述

  • · 繼承collection接口
  • · 無序(不記錄添加順序)、不允許元素重復、只允許存在一個null元素

二、實現類

1. HashSet

  • · 底層其實是包裝了一個HashMap實現的
  • · 采用HashCode算法來存取集合中的元素,具有比較好的讀取和查找性能
  • · 通過equals和HashCode來判斷兩個元素是否相等
  • · 非線程安全

2. LinkedHashSet

  • · 繼承HashSet,本質是LinkedHashMap實現
  • · 有序的,根據HashCode的值來決定元素的存儲位置,同時使用一個鏈表來維護元素的插入順序
  • · 非線程安全

3. TreeSet

  • · 是一種排序的Set集合,實現了SortedSet接口,底層是用TreeMap實現的,本質上是一個紅黑樹原理
  • · 相對HashSet來說,TreeSet提供了一些額外的按排序位置訪問元素的方法,例如first(), last(), lower(), higher(), subSet(), headSet(), tailSet().
  • · 排序分兩種:自然排序(存儲元素實現Comparable接口)和定制排序(創建TreeSet時,傳遞一個自己實現的Comparator對象)

4. EnumSet

  • · 集合元素必須是枚舉類型,否則會拋出異常
  • · EnumSet集合也是有序的,其順序就是Enum類內元素定義的順序
  • · EnumSet存取的速度非常快,批量操作的速度也很快

 

三、遍歷Set的兩種方法

1. iterator迭代遍歷:

 

Set<String> set = new HashSet<String>();

Iterator<String> it = set.iterator();

while (it.hasNext()) {

  String str = it.next();

  System.out.println(str);

}

 

2. foreach循環遍歷:

for (String str : set) {

      System.out.println(str);

}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM