java集合底層實現

2021-06-22 09:35:27 字數 1182 閱讀 2866

set和map的關係

set代表無序,不能重複的集合;map代表key-value組成的集合,是一種關聯陣列。map的key要求是不能重複,沒有順序。把map的所有key組合起來就是set。setkeyset();

hashmap和hashset原理

hashmap底層是用陣列鍊錶儲存的,元素是entry。向hashmap新增時,由key的hashcode決定entry儲存位置,當兩個entry物件的key的hashcode相同時,由key的equals()方法返回值決定採用覆蓋行為(返回true),還是在煉表頭新增新的entry(返回false)。collectionvalues(),返回集合物件,但不能新增元素,主要是用來遍歷。自定義類如果放入hashmap或hashset中,需要重寫equals和hashcode方法。

hashsets = new hashsets.add(new name("1"));

system.out.println(s.contains(new name("1")));

如果不對name類重寫hashcode,equals,輸出結果是false。因為預設的不能保證結果一樣。

treemap和treeset原理

treemap底層是用紅黑樹來儲存,每個entry對應樹的乙個節點,treemap元素預設從小到大排序。v put(key k, value v)實質是二叉排序樹的插入演算法

arraylist底層是陣列

list是線性表的資料結構,arraylist是順序儲存的線性表

linkedlist底層是鍊錶

linkedlist是鏈式儲存的線性表,實質是雙向鍊錶,實現了list和deque介面。deque代表雙端佇列,既可以當做佇列也可以當作棧。

vector和arraylist區別

vector提供synchronized修飾方法,是執行緒安全版本的arraylist

iterator迭代器

用於迭代collection集合,包括set和list。集合提供iterator()方法

迭代器模式:系統為遍歷集合提供標準的「迭代器介面」,用於訪問集合裡的資料,如何實現交給集合自己完成。

java集合底層實現原理

底層使用陣列實現 該集合是可變長度陣列,陣列擴容時,會將老陣列中的元素重新拷貝乙份到新的陣列中,每次陣列容量增長大約是其容量的1.5倍,這種操作的代價很高。採用了fail fast機制,面對併發的修改時,迭代器很快就會完全失敗,而不是冒著在將來某個不確定時間發生任意不確定行為的風險 remove方法...

java集合的底層實現原理

參考文獻 arraylist是list介面的可變陣列非同步實現,並允許包括null在內的所有元素。底層使用陣列實現 該集合是可變長度陣列,陣列擴容時,會將老陣列中的元素重新拷貝乙份到新的陣列中,每次陣列容量增長大約是其容量的1.5倍,這種操作的代價很高。採用了fail fast機制,面對併發的修改時...

Java集合各實現類的底層實現原理

參考文獻 arraylist是list介面的可變陣列非同步實現,並允許包括null在內的所有元素。底層使用陣列實現 該集合是可變長度陣列,陣列擴容時,會將老陣列中的元素重新拷貝乙份到新的陣列中,每次陣列容量增長大約是其容量的1.5倍,這種操作的代價很高。採用了fail fast機制,面對併發的修改時...