HashSet集合,map集合

2021-09-19 04:21:00 字數 1660 閱讀 3480

hashset集合

遍歷通過迭代器iterator遍歷

它儲存的是無序集合

不允許重複資料新增

string strs = new string[10];

hs.toarray(strs);

轉換hashset集合到strs陣列中

hashset物件去重的原理:

雜湊表依賴兩個方法hashcode()和equals();

執行順序:

首先比較雜湊值是否相同

相同:繼續執行equals()方法

equals()相同:同乙個物件,不能新增

equals()不同:不是同乙個物件,可以新增       

不同:不是同乙個物件,可以新增

結論:元素的唯一性是由hashcode()和equals()共同保證的,缺一不可

map集合

實現類hashmap

儲存值:map.put(k,v);

set set = map.keyset();//獲取所有鍵的集合到set集合中

map.values();遍歷獲得所有的值的集合

map.putifabsent("k1", "newk1");//判斷指定的key如果沒有值或者值為null,才進行儲存

map.put(null, null);//map的key和value都能儲存null

通過entry遍歷集合:

set> entryset = map.entryset();

for (entry entry : entryset)

hashtable是執行緒安全的,hashmap是執行緒不安全的

hashmap使用效率比較高,對安全要求不高的建議使用hashmap

不過需要執行緒安全時建議使用concurrenthashmap

treemap是自帶排序的map集合

因為它是實現二叉樹(紅黑樹)的資料儲存結構的

treemap可以自定義排序,通過構造方法傳參的方式傳入實現了comparator類的子類進行排序

注意:當treemap的鍵是物件時,需要此物件實現comparable介面,構造方法此時引數可以不傳

linkedhashmap集合是儲存的有序資料集合

linkedhashset集合是儲存的有序資料集合

總結:1.list和map、set

list:有序,並且可以儲存相同的物件

map:使用鍵值對儲存方式,兩個不同的key可以引用相同的物件,但是key不能重複

set:無序,不能重複

2.arraylist和linkedlist

arraylist:底層使用陣列,儲存和讀取效率高,增刪特定位置效率低

linkedlist:使用的是雙鏈表的資料結構,增刪效率高,查詢效率低

3.arraylist和vector

arraylist:不同步,效率高很多

vector:同步,執行緒安全(sychronized)

4.hashmap和hashtable

hashmap:執行緒不安全,效率高,鍵和值都可以儲存null值

hashtable:執行緒安全,不能儲存null值

5.hashtable和concurrenthashmap

都能達到執行緒安全,建議如果有執行緒安全需求優先使用第二個

linkedhashmap和linkedhashset都是有序集合

使用HashSet將map集合去重

在前面的部落格中講過用map做小實體,接收資料。現在業務要求是 對實體集合去重 使用hashset將map集合去重。1 取出listoldlist中的userid,用hashsetremovalmanageridlist集合接收,自動去重 可借鑑 利用hashset對陣列去重 2 新建listnew...

集合框架 Map集合

map集合 同collection,是集合框架中的頂層介面。一次新增一對元素,collection一次新增乙個元素。所有,map集合也稱為雙列集合,collection集合稱為單列集合。介面map key是鍵,value是值,其實map集合中儲存的就是鍵值對,map集合中必須保證鍵的唯一性。常用方法...

Java集合 Map集合

map map 用於儲存具有對映關係的資料,因此 map 集合裡儲存著兩組值,一組值用於儲存 map 裡的 key,另外一組用於儲存 map 裡的 value map 中的 key 和 value 都可以是任何引用型別的資料 map 中的 key 不允許重複,即同乙個 map 物件的任何兩個 key...