日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JAVA 常用集合內部機制原理

瀏覽:174日期:2022-09-05 14:48:17

對于常用的集合大家都不陌生,但是深入到內部原理可能都是一知半解,通過閱讀源碼理解如下。

ArrayList

ArrayList內部就是一個默認大小為10的動態對象數組容器,每當add一個新數據的時候,如果大于原來的容器大小,則會通過Arrays.copyOf把容器大小增加到原來的1.5倍,以此類推。當可以預知數據大小,可以通過initialCapacity來默認設置動態數據的大小,減少擴容帶來的資源消耗。

時間復雜度:

get() - 直接讀取下標 - O(1)

add(E) - 直接在后面添加 - O(1)

add(idnex, E) - 插入數據后需要移動后面的數據 - O(n)

remove(index) - 刪除后需要移動 - O(n)

LinkedList

LinkedList內部是一個雙向鏈表,add新數據的時候,其實就是調用linklast在鏈表尾部插入數據。刪除的時候直接找到對應數據,替換掉鏈表的前后節點即可。

時間復雜度:

get() - 需要遍歷 - O(n)

add(E) - 調用linklast直接添加在最后 - O(1)

add(index, E) - 需要先查找到原來index位置的數據,再重新指定鏈表前后的數據 - O(n)

remove() - 直接調用removeLast刪除最后數據 - O(1)

remove(index) - 需要先查找到原來index位置的數據 - O(n)

HashMap

HashMap內部其實是一個數組,每個數組下是一個單向鏈表。HashMap中的數組是一個取名為Entry的類,類包含(key, value, next)這幾個屬性。存放規則為,數組下標按hash(key)%len獲得,取得數組后則查找對應數組的值。HashMap還有個負載因子(默認0.75),當里面數組填滿了75%的時候,會進行擴展到原來大小的2倍。

那么問題來了,如果在put的時候,取到hash(key)%len的值相等時不就沖突了?HashMap的處理方法是:原來有一個Entry[0] = A,此時來一個index也是0的B,則會把Entry[0] = B,B.next = A,又來一個C的時候,則會把Entry[0] = C,C.next = B,以此類推。這樣Entry就會形成一個鏈表,取的時候則是遍歷鏈表取值。

這里需要提到的是,使用hashMap的時候,引入的key對象必須重寫hashCode()和equal()兩個函數,原因可以參考源碼判斷條件(if (e.hash == hash && ((k = e.key) == key || key.equals(k)))),如果hashCode()沒重寫,則壓根找不到對應數組,如果equal()沒重寫,則無法判斷key值的內容是否相等。

public V put(K key, V value) { if (key == null) return putForNullKey(value); //null總是放在數組的第一個鏈表中 int hash = hash(key.hashCode()); int i = indexFor(hash, table.length); //遍歷鏈表 for (Entry<K,V> e = table[i]; e != null; e = e.next) { Object k; //如果key在鏈表中已存在,則替換為新value if (e.hash == hash && ((k = e.key) == key || key.equals(k))){ V oldValue = e.value; e.value = value; e.recordAccess(this); return oldValue; } } modCount++; addEntry(hash, key, value, i); return null; }

補充:

在java8之后hashmap進行了優化:由于單向鏈表的查詢時間復雜度為O(n),在極端情況下可能存在性能問題,于是java8針對鏈表長度大于8的情況會使用時間復雜度為O(log n)的紅黑樹進行存儲來提升存儲查詢的效率。

LinkedHashMap

LinkedHashMap內部雙向鏈表和HashMap的結合,支持多種迭代順序,默認按插入順序,也可以按訪問順序。

訪問順序(accessOrder=true):調用過get訪問的元素會放到鏈尾,迭代會從鏈首開始

插入順序(accessOrder=false):按插入順序迭代出來

TreeMap

TreeMap內部是基于紅黑樹實現的,并且默認會通過compareTo按照key類型進行自然排序。TreeSet的低層是TreeMap。

來自:http://www.jointforce.com/jfperiodical/article/4192

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久人人97超碰国产公开结果| 国产精品99一区二区| 亚洲免费精品| 国产视频欧美| 日韩精品欧美精品| 国产精品一页| av资源中文在线天堂| 久久蜜桃精品| 蜜乳av另类精品一区二区| 亚洲tv在线| 日韩免费精品| 国产精品99久久免费| 国产成人精品三级高清久久91| 亚洲播播91| 久久国产精品久久久久久电车| 综合在线一区| 麻豆一区二区三| 欧美一区三区| 日本va欧美va瓶| 福利精品一区| 91久久中文| 国产剧情一区| 色婷婷久久久| 亚洲欧美日韩专区| 国产精品mv在线观看| 国产一区二区久久久久| 久久精品国产www456c0m| 蜜桃av一区| 久久精品九色| 亚洲国产不卡| 国产精成人品2018| 久久国产电影| 国产精品片aa在线观看| 99热精品久久| 国产乱码精品一区二区三区四区| 99久久精品费精品国产| 日本午夜精品视频在线观看| 97精品国产福利一区二区三区| 久久午夜精品| 麻豆国产在线| 综合一区av| 久久国产免费| 国产精品亚洲成在人线| 亚洲精品电影| 精品免费av| 涩涩涩久久久成人精品| 色天使综合视频| 91精品福利观看| 国产在线成人| 美女性感视频久久| 噜噜噜躁狠狠躁狠狠精品视频 | 日韩精品久久理论片| 久久精品国产亚洲一区二区三区| 午夜亚洲一区| 日韩激情一区| 免费亚洲婷婷| 日韩一区二区三免费高清在线观看| 91看片一区| 久久99国产精品视频| 日韩高清一区在线| 久久亚洲风情| 亚洲一级高清| 成人亚洲欧美| 精品亚洲免a| 日本免费新一区视频| 99pao成人国产永久免费视频 | 久久一区欧美| 日本va欧美va欧美va精品| 欧美网站在线| 欧美丝袜一区| 色老板在线视频一区二区| 成人在线免费观看91| 日韩成人av影视| 亚洲三级精品| 亚洲一区免费| 亚洲精品1区| 91精品高清| 99久久夜色精品国产亚洲狼| 久久精品二区亚洲w码| 国产探花在线精品一区二区| 首页欧美精品中文字幕| 不卡中文字幕| 欧美日韩国产传媒| 九一国产精品| 欧美va天堂| 黄色亚洲大片免费在线观看| 欧美中文一区二区| 久久亚洲国产| 亚洲国产日韩欧美在线| 在线精品视频在线观看高清| 欧美1级日本1级| 亚洲精品91| 日韩一级不卡| 日韩午夜一区| 在线精品一区二区| 色狠狠一区二区三区| 日韩一区二区三区精品| 日韩精品a在线观看91| 婷婷精品久久久久久久久久不卡| 免费在线看一区| 亚洲开心激情| 欧美日韩一区二区三区在线电影| 欧美亚洲一级| 国产精品3区| 精品国产精品国产偷麻豆 | 日韩激情网站| 88久久精品| 国产区精品区| 久久一区国产| 亚洲人成在线网站| 欧美1区2区3区| 丝袜诱惑制服诱惑色一区在线观看| 黄色成人91| 亚洲三级国产| 国产精品分类| 日本免费一区二区三区四区| 亚洲高清av| 蜜臀a∨国产成人精品| 欧美一区91| 裤袜国产欧美精品一区| 欧美日韩国产免费观看视频| 亚洲综合国产| 国产欧美日韩一区二区三区在线| 精品国产乱码久久久久久1区2匹| 久久久精品网| 亚洲三级av| 国内精品伊人| 欧美日韩国产高清| 日韩av不卡一区二区| 久久精品一区二区国产| 日韩精品水蜜桃| 日韩精品福利一区二区三区| 久久99蜜桃| 婷婷精品视频| 国产日韩一区| 亚洲最新av| 91免费精品国偷自产在线在线| 国产欧美大片| 日韩欧美不卡| 亚欧成人精品| 日韩三区在线| 日韩av网站免费在线| 日韩一区电影| 日韩一区二区三区四区五区| 中文在线免费视频| 亚洲涩涩av| 国产精品xx| 中文字幕乱码亚洲无线精品一区| 美女高潮久久久| 欧美va天堂在线| 国产精品毛片视频| 99视频精品全国免费| 久久国产精品免费精品3p | 911亚洲精品| 国产综合视频| 精品国产亚洲一区二区三区在线 | 国产精品88久久久久久| 国产亚洲一卡2卡3卡4卡新区| 91精品国产乱码久久久久久久 | 久久亚洲一区| 国产精品xx| 欧美一区在线观看视频| 九九在线精品| 国产不卡精品| 日本午夜免费一区二区| 99在线精品视频在线观看| 福利一区视频| 国产精品片aa在线观看 | 好看的av在线不卡观看| 精品久久中文| 日韩欧美激情电影| 亚洲免费黄色| 久久国产小视频| av资源中文在线天堂| 久久国际精品| 久久亚洲二区| 国产99精品| 成人三级高清视频在线看| 婷婷综合一区| 免费久久99精品国产自在现线| 在线观看精品| 成人片免费看| 黄色欧美在线| 国产精品igao视频网网址不卡日韩| 美女精品在线| 免费久久精品| 天堂√8在线中文| 麻豆国产欧美一区二区三区 | 欧美激情精品| 国产日韩亚洲| 国产欧美视频在线| 日韩欧美另类中文字幕| 亚洲一区二区三区四区电影| 亚洲国产专区| 日韩av一级| 国产精品99一区二区三| 日韩精品视频网| 日韩av黄色在线| 欧美三区不卡| 国产精品v日韩精品v欧美精品网站 |