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