集合專區 第6集 LinkedHashMap

2021-09-19 13:59:44 字數 1635 閱讀 2133

linkedhashmap繼承了hashmap

linkedhashmap:hashmap是以key-value形式儲存資料的

extends hashmap:繼承了hashmap,雜湊表部分的功能和hashmap相似。

implements map:實現了map。hashmap已經繼承了map介面,為什麼linkedhashmap還要實現map

linkedhashmap還維護著乙個雙重鏈結鍊錶

因為繼承了hashmap,所有結構上也是鍊錶+陣列+紅黑樹

同時因為linkedhashmap因為是有順序的,它包含乙個貫穿於所有entry的雙重鏈結列表。

大部分方法都是繼承hashmap,但是也有部分關鍵方法是重寫的

1 linkedhashmap 中陣列中的鍊錶節點元素物件結構

static class entryextends hashmap.node

}

2 put是繼承了父類hashmap,但是如果和父類完全一樣,那肯定是不可能的,所有肯定對方法有重寫

重寫的方法1 :

nodenewnode(int hash, k key, v value, nodee)
newnode()方法被重寫了,呼叫方式:(put(父類)---->putval(父類)--->newnode(子類重寫))

重寫的方法2 :

treenodenewtreenode(int hash, k key, v value, nodenext)
newnode()方法被重寫了,呼叫方式: put(父類)---->putval(父類)---->puttreeval(父類)---->newtreenode(子類重寫)
重寫的方法3 :

public v get(object key)
void afternodeaccess(nodee) 

tail = p;

++modcount;

}}

因為linkedhashmap中有2種 排序方式:插入的順序(accessorder=false)\ 訪問順序(accessorder=true)

accessorder:通過構造方法來設定

重寫排列雙向鍊錶

雙向鍊錶(插入的時候呼叫下面方法) 指標問題:

private void linknodelast(linkedhashmap.entryp) 

}

當第一次新增元素的時候 , 頭節點和尾節點 都為 這個新元素

當不是第一次新增元素的時候 把尾節點的值設定為新來的元素,然後把舊的尾節點的after指向新的尾節點,把新節點的before指向酒舊的尾節點  

/**

* the head (eldest) of the doubly linked list.

*/transient linkedhashmap.entryhead;

/** * the tail (youngest) of the doubly linked list.

*/transient linkedhashmap.entrytail;

Python基礎6 集合

集合 set 是乙個無序的不重複元素序列 可以使用大括號 或者set 函式建立集合 注意 建立乙個空集合必須用set 而不是 因為 是用來建立乙個空字典集合的建立 用 方式建立集合 可以看出集合是無序的 animals print animals print type animals 用set方式建...

No 6集合 記憶體相關

字典dic v1 dic k3 報錯 print v1 結果 報錯 v2 dic.get k3 666 返回自定義值,不寫返回none print v2 結果 666 pop python dic result dic.pop k2 pop刪除的值可以檢視 print dic,result del ...

Hibernate6 集合對映

集合對映 一.對映set set是乙個集合介面,它的特性和數學上的集合有點類似,set中存放的是物件的引用,繼承自collection藉口.特性 1 不允許存放重複元素。2 元素是無序。3 主要有hashset,linkedhashset,treeset 3個實現set介面的具體類。1 hashse...