天天看點

Java中List、Set、Map差別--小記三者異同去重的問題運作截圖

list,set都是繼承自collection接口;

list特點:元素有放入順序,元素可重複;

set特點:元素無放入順序,元素不可重複(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的,其位置其實是固定的);

map特點:元素按鍵值對存儲,無放入順序 (應該知道什麼是鍵值對吧!) ;

list接口有三個實作類:linkedlist,arraylist,vector;

linkedlist:底層基于連結清單實作,連結清單記憶體是散亂的,每一個元素存儲本身記憶體位址的同時還存儲下一個元素的位址。連結清單增删快,查找慢;

arraylist和vector的差別:arraylist是非線程安全的,效率高;vector是基于線程安全的,效率低;

set接口有兩個實作類:hashset(底層由hashmap實作),linkedhashset;

sortedset接口有一個實作類:treeset(底層由平衡二叉樹實作)

query接口有一個實作類:linklist

map接口有三個實作類:hashmap,hashtable,linkehashmap

hashmap非線程安全,高效,支援null;hashtable線程安全,低效,不支援null

sortedmap有一個實作類:treemap

其實最主要的是,list是用來處理序列的,而set是用來處理集的。map是知道的,存儲的是鍵值對

set 一般無序不重複.map kv 結構 list 有序

map相當于和collection一個級别的;map

Java中List、Set、Map差別--小記三者異同去重的問題運作截圖

這樣一來基本就明白了重寫equal是幹什麼的,也知道了set集合針對string類型和8大基礎資料類型過濾掉重複資料,如果存放的是其他類型對象,則需要重寫hashcode方法和equals方法,當equals比較相等時,則會去比較hashcode值 hashcode的值 如果一緻的話,則不會存進set