集合

集合框架? ??

一、collection

collection接口是所有單列集合的根,然后被List、Set、queue、Stack四大集合繼承(容量:jdk1.8版本之前,初識容量,10,超過提升為1.5倍;1.8版本以后,初識容量為0,通過add(),初識容量為10,超過提升1.5倍)

?1、List (有序,可重復)

????????????1.1? Arraylist? 底層由數組實現,有序可重復,線程不安全,查找效率高

????????????1.2 LinkedList 底層由鏈表實現,有序可重復,線程不安全,增刪效率高

????????????1.3 Vector 線程安全的Arraylist (初始容量10,擴充時,2倍擴充)

?2、set(元素是無序的,不可以重復,沒有索引)

????????????2.1 HashSet:?底層數據結構是哈希表(存入對象時,先判斷hashCode()得到的值,如果一樣,再用equals方法比較,在相同就當做同一個元素,不同就在同一個位置上串聯存儲兩個元素),線程不安全,存取速度快

? ? ? ? ? ? 2.2 TreeSet :底層數據結構是二叉樹,線程不安全。可以對Set集合中的元素進行排序

?3、queue:先進先出可以考慮Queue隊列

?4、stack:先進后出可以考慮Stack,遞歸!!!!壓棧 ,彈棧

二、Map(雙列集合)

Map集合是一個接口,和Collection集合不同的是,它是雙列集合,也就是說他所存儲的是鍵值對。(其中鍵要求唯一,一個鍵不能對應多個值,Map集合沒有Iterator迭代器,如果需要迭代需要轉化為單列集合間接迭代)(初始容量為16,0.75時,擴充為原來2倍)

? ???????????1、HashMap:底層由數組+鏈表+紅黑樹實現,線程不安全,無序,鍵值可以為null,效率高。

?????????????2、ConcurrentHashMap:底層由數組+鏈表+紅黑樹實現,線程安全,無序,鍵值不可以為null(同步代碼塊)。

? ???????????3、HashTable:底層由數組+鏈表+紅黑樹實現,線程安全,已被取代(同步方法)

數據存儲時,通過key值得hashcode,計算出hash值,如果引發hash沖突,就在該數組位置引出鏈表,當鏈表數超過8,則變為紅黑樹,鏈表數小于6,變為數組+鏈表

三、迭代器

迭代器是針對單列集合使用的,底層主要有三個方法,hasnext()、tnext()、remove();

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • ArrayList實現原理要點概括 參考文獻:http://zhangshixi.iteye.com/blog/6...
    晨光光閱讀 1,092評論 0 1
  • 集合分為單例集合與雙列集合 雙列集合的5種遍歷方式 import java.util.*; public clas...
    一生所愛_d2ab閱讀 301評論 0 1
  • 原文地址 Java集合 Java集合框架:是一種工具類,就像是一個容器可以存儲任意數量的具有共同屬性的對象。 Ja...
    gyl_coder閱讀 995評論 0 8
  • Java集合類可用于存儲數量不等的對象,并可以實現常用的數據結構如棧,隊列等,Java集合還可以用于保存具有映射關...
    小徐andorid閱讀 1,965評論 0 13
  • 集合類框架的介紹: ![Java 集合類框架](https://upload-images.jianshu.io/...
    LynnGuo閱讀 763評論 0 1