java常用集合

2021-07-22 10:31:11 字數 1865 閱讀 5566

執行緒安全

執行緒安全就是說多執行緒訪問同一**,不會產生不確定結果。

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結構...