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

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

JAVA 常用集合內部機制原理

瀏覽:171日期: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久久,三上悠亚国产精品一区二区三区
日本在线成人| 国产日韩视频在线| 超碰在线99| 国产精品久久观看| 欧美aa在线观看| 精品在线91| 91成人网在线观看| 亚洲深夜影院| 日本成人中文字幕| 国产探花一区| 久久99青青| 亚洲人成在线网站| 99视频精品免费观看| 亚洲欧美视频| 国产午夜精品一区在线观看| 三级在线观看一区二区| 日本午夜精品久久久| 久久精品免费看| 激情久久中文字幕| 蜜桃久久久久久| 国产精品九九| 日韩国产一区二区| 欧美精选一区二区三区| 视频在线观看91| 91精品国产自产在线丝袜啪| 欧美经典一区| 九色porny丨国产首页在线| 自拍日韩欧美| 青青草91视频| 色在线中文字幕| 国产成人精品三级高清久久91| 日本激情一区| 日韩视频在线一区二区三区 | 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 亚洲精品精选| 国产精品日韩精品在线播放 | 欧美aaaaaa午夜精品| 国产v综合v| 日韩国产在线观看| 国产日韩电影| 久久亚洲二区| 国产精品日本一区二区三区在线| 成人台湾亚洲精品一区二区| 久久国产亚洲精品| 中文字幕日本一区二区| 欧美精品1区| 在线亚洲一区| 精品高清久久| 国产99久久久国产精品成人免费| 妖精视频成人观看www| 久久精品国产久精国产爱| 蜜桃av一区二区| 日本不卡免费高清视频在线| 亚洲日韩中文字幕一区| 四虎4545www国产精品| 欧美片第1页综合| 999久久久国产精品| 你懂的国产精品永久在线| 国产视频一区三区| 成人黄色av| 日韩精品久久理论片| 99精品国产一区二区三区| 国产精品成人**免费视频 | 欧美日韩一区二区三区不卡视频| 欧美.日韩.国产.一区.二区| 鲁大师精品99久久久| 99riav国产精品| 精品国产免费人成网站| 日韩国产一二三区| 亚洲综合二区| 久久理论电影| 日韩欧美视频专区| 国产精品一区二区美女视频免费看| 99pao成人国产永久免费视频| 久久在线91| 91亚洲精品在看在线观看高清| 精品国产一级| 国产亚洲精品精品国产亚洲综合| 蜜臀国产一区二区三区在线播放 | 国产a亚洲精品| 国产精品99精品一区二区三区∴ | 日韩高清三区| 亚洲欧美专区| 亚洲涩涩av| 免费看日韩精品| 国产日韩专区| 日韩亚洲精品在线| 国产精品久久久久av电视剧| 视频一区日韩| 日本亚洲三级在线| 蜜臀久久99精品久久久久久9| 欧美午夜不卡影院在线观看完整版免费| 日产午夜精品一线二线三线| 精品三级久久久| 精品国产亚洲一区二区三区大结局| 国产精品久久久久久妇女| 91精品一区| 国产精品嫩模av在线| 国产欧美日韩视频在线| 国产九九精品| 免费日韩一区二区三区| 麻豆国产91在线播放| 精品三级在线| 久久爱www.| 欧美激情视频一区二区三区在线播放| 欧美日韩18| 国产无遮挡裸体免费久久| 欧美激情久久久久久久久久久| 精品国产a一区二区三区v免费| 激情国产在线| 亚洲手机视频| 中文字幕亚洲精品乱码| 日韩激情精品| 老牛国内精品亚洲成av人片| 日韩在线不卡| 亚洲视频播放| 欧美精品国产一区| 伊伊综合在线| 婷婷激情综合| 色8久久久久| 六月丁香综合在线视频| 久久久久久久久丰满| 亚洲资源av| 欧美黑人做爰爽爽爽| 欧美日韩一二三四| 亚洲aa在线| 国产在线视频欧美一区| 99久久亚洲精品蜜臀| 亚洲色图综合| 精品资源在线| 免费av一区| 国产欧美一区| av高清一区| 日韩专区在线视频| 欧美a级一区二区| 婷婷激情久久| 国产亚洲精品美女久久| 日本久久成人网| 日韩毛片网站| 日韩一区亚洲二区| 免费成人在线视频观看| 麻豆中文一区二区| 五月天久久久| 国产一区 二区| 成人欧美一区二区三区的电影| 亚洲欧美日韩国产一区二区| 欧美国产另类| 999在线观看精品免费不卡网站| 日韩激情一区二区| av在线最新| 美国三级日本三级久久99 | 国产伦久视频在线观看| 狠狠干成人综合网| 欧美激情麻豆| 久久不射网站| 国产一区二区三区四区二区| 欧美在线影院| 欧美国产先锋| 美女日韩在线中文字幕| 成人影视亚洲图片在线| 亚洲综合小说| 亚洲福利专区| 国产一区二区三区亚洲| 婷婷成人av| 欧美大黑bbbbbbbbb在线| 国产精品日本一区二区不卡视频| 日韩天堂av| 日韩精品中文字幕第1页| 7m精品国产导航在线| 日韩午夜av在线| 亚洲国产福利| 免费人成黄页网站在线一区二区 | 日韩欧美一区二区三区在线视频| 国产亚洲字幕| 亚洲欧美日本国产| 怡红院精品视频在线观看极品| 开心激情综合| 日韩高清成人在线| 亚洲一区黄色| 欧美亚洲激情| 天堂中文在线播放| 蜜桃久久久久| 国产伦精品一区二区三区视频| 中文字幕日本一区二区| 午夜精品免费| 精品三级国产| 免费亚洲婷婷| 国产精品久久久久久久久免费高清 | 日本亚洲三级在线| 午夜宅男久久久| 亚洲调教视频在线观看| 麻豆传媒一区二区三区| 国产欧美88| 国产人成精品一区二区三| 亚洲青青久久| 蜜桃视频免费观看一区| 中日韩男男gay无套| 激情视频一区二区三区| 久久天堂成人| 久久精品国产www456c0m|