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機制,面對併發的修改時...