免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java集合

集合類存放在java.util包中,主要有三種:set(集),list(列表包括Queue)和map(映射)。

  1. CollectionCollection是集合List、Set、Queue的最基本的接口。

  2. Iterator:迭代器,可以通過迭代器遍歷集合中的數(shù)據(jù)。

  3. Map:是映射表的基礎接口 。

一、ArrayList(數(shù)組)

ArrayList內(nèi)部是通過數(shù)組實現(xiàn)的,它允許對元素進行快速隨機訪問。

缺點是每個元素之間不能有間隔,當數(shù)組大小不滿足時需要增加存儲能力,就要將已經(jīng)有數(shù)組的數(shù)據(jù)復制到新的存儲空間中。當從 ArrayList 的中間位置插入或者刪除元素時,需要對數(shù)組進行復制、移動、代價比較高。因此,它適合隨機查找和遍歷,不適合插入和刪除。

二、LinkedList(鏈表)

LinkedList是用鏈表結構存儲數(shù)據(jù)的,很適合數(shù)據(jù)的動態(tài)插入和刪除,隨機訪問和遍歷速度比較慢。另外,它還提供了List接口中沒有定義的方法,專門用于操作表頭和表尾元素,可以當作堆棧、隊列和雙向隊列使用。

三、HashMap(數(shù)組+鏈表+紅黑樹)

HashMap根據(jù)鍵的hashCode值存儲數(shù)據(jù),大多數(shù)情況下可以直接定位到它的值,因而具有很快的訪問速度,但遍歷順序卻是不確定的。HashMap最多只允許一條記錄的鍵為null,允許多條記錄的值為null。

HashMap非線程安全,即任一時刻可以有多個線程同時寫HashMap,可能會導致數(shù)據(jù)的不一致。如果需要滿足線程安全,可以用 Collections 的 synchronizedMap 方法使 HashMap 具有線程安全的能力,或者使用 ConcurrentHashMap。

HashMap源碼解析——HashMap.hsah(Object key)

關鍵變量

HashMap源碼解析——resize

JAVA 7 實現(xiàn)

HashMap里面是一個數(shù)組,然后數(shù)組中每個元素是一個單向鏈表。上圖中,每個綠色的實體是嵌套類Entry 的實例,Entry包含四個屬性:key, value, hash值和用于單向鏈表的next。

  1. capacity:當前數(shù)組容量,始終保持 2^n,可以擴容,擴容后數(shù)組大小為當前的 2 倍。

  2. loadFactor:負載因子,默認為 0.75。

  3. threshold:擴容的閾值,等于capacity * loadFactor 。

JAVA 8 實現(xiàn)

Java 8 對 HashMap 進行了一些修改,最大的不同就是利用了紅黑樹,所以其由數(shù)組+鏈表+紅黑樹組成。
根據(jù) Java 7 HashMap 的介紹,我們知道,查找的時候,根據(jù) hash 值我們能夠快速定位到數(shù)組的 具體下標,但是之后的話,需要順著鏈表一個個比較下去才能找到我們需要的,時間復雜度取決于鏈表的長度,為 O(n)。為了降低這部分的開銷,在Java8 中,當鏈表中的元素超過了8個以后, 會將鏈表轉換為紅黑樹,在這些位置進行查找的時候可以降低時間復雜度為 O(log N)。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java 集合框架
Java集合總覽
JAVA集合框架中的常用集合及其特點、適用場景、實現(xiàn)原理簡介
part3-java集合基礎
Java中的Set,List,Map的區(qū)別
java中Map,List與Set的區(qū)別
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服