執行緒安全
執行緒安全就是說多執行緒訪問同一**,不會產生不確定結果。
list和set類
list類和set類都是collection集合介面的子介面。
set子介面:無序,不允許重複。
list子介面:有序,可以允許重複。
set和list對比:
set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置的改變。
list:和陣列類似,list可以動態增長,查詢元素效率高,插入刪除元素效率低,因此會引起其他元素的改變。
set和list的具體子類
set------>hashset:以雜湊表的形式存放元素,插入刪除效率高。
list------>arraylist:動態陣列
----------->linkedlist:鍊錶、佇列、堆疊。
hashmap去掉了hashtable的contains方法,但是加上了containsvalue()和containskey()方法。
hashtable是同步的,而hashmap是非同步的,效率上比hashtable高
hashmap允許鍵值為空,而hashtable不允許。
vector hashtable stringbuffer
linkedlist arraylist hashset hashmap stringbuilder
對於查詢和刪除較為頻繁,且元素數量較多的應用,set或map是更好的選擇;
arraylist適用於通過為位置來讀取元素的場景;
linkedlist適用於要頭尾操作或者插入指定位置的場景;
vector適用於執行緒安全的arraylist場景;
stack適用於執行緒安全的lifo場景;
hashset適用於對排序沒有要求的非重複元素的存放
treeset適用於要排序的非重複元素的存放;
hashmap適用於大部分key-value的訪問場景;
treemap使用與需排序存放的key-value場景;
hashmap的原理
hashmap的資料結構,資料結構中有陣列和鍊錶來實現對資料的儲存,但這兩個基本上是兩個極端
陣列記憶體區間是連續的,占用記憶體嚴重,空間複雜度大,但陣列的二分查詢時間複雜度小,為o(1),
優缺點:查詢簡單,插入刪除困難。
鍊錶煉表內粗區間離散,占用內粗比較寬鬆,空間複雜度很小,但時間複雜度大,為o(n)
優缺點:查詢困難,插入和刪除容易
雜湊表既滿足了資料查詢方便,同時不占用太多的內容空間,使用十分方便。
hashmap的訪問實現
儲存時int hash=key.hashcode(); //這個hashcode方法可以理解為每個key的hash是乙個固定的int值
int index=hash%entry.legth;
entry[index]=value;
簡單的說就是,hashmap有乙個叫做entry的內部類,每當往hashmap裡面存放key-value對的時候,都會為他們例項化乙個entry物件,entry具體放在那個位置
,根據key的hashcode()方法計算出來的hash值來決定,hash值用來計算key在entry陣列的索引。
如果兩個key值有相同的hash值,他們會以鍊錶的形式來儲存,
如果在剛才計算出來的索引位置沒有元素,直接把entry物件放在那個索引上。
如果索引上有元素,然後會進行迭代,一直到entry->next是null。當前的entry物件程式設計鍊錶的下乙個節點
如果我們再次放入相同的key會怎麼樣呢?邏輯上,它用該替換老的value,事實上,他確實是這麼做的。在迭代過程中,會呼叫equals()方法來檢查key的相等性,如
果這個方法返回true,它就會用當前entry的value來替換之前的value。
Java常用集合總結
1.list 元素是有序的,可以重複,因為有索引 arraylist 陣列結構,特定 查詢快,增刪慢,初始長度是10,50 延長 linkedlist 鍊錶資料結構,特點 增刪快,查詢慢 vector 陣列結構,執行緒同步,被arraylist代替,初始長度是10,100 延長,列舉是vector特...
Java集合常用類
集合的兩個頂級介面分別為 單列集合collection 和 雙列集合map 單列集合 collection 和雙列集合 map 特點如下 一 collection 單列集合類的根介面,有兩個重要的子介面,即 list 和 set set 介面特點是元素無序並且不可重複,主要實現類有 hashset ...
java集合學習之 常用集合類
collection介面下包括 list結構的集合類 arraylist類,linkedlist類,vector類,stack類 set結構的集合類 hashset類,treeset類,linkedhashset實現類 queue結構的集合 priorityqueue類 map介面下包括 map結構...