集合類在應用中常常用到,裡面的知識也是比較多的,總結一下常用的一些集合類。
一、集合圖
針對這張圖來展開集合之路。
二、collections
這個類是個工具類用來服務我們的集合類的,裡面的方法本人沒有一一用過,也說不好,我就把一些可能會用到的方法拿出來說下,順便加深下集合類的記憶。
1.排序
@suppresswarnings()
public static void sort(listlist, comparator super t> c)
});system.out.println(list);
}
控制台列印的結果:
[1, 3, 4, 5, 2]
[5, 4, 3, 2, 1]
2.copy方法
原始碼
public static void copy(list super t> dest, list extends t> src)
ensurecapacityhelper(elementcount + 1);
system.arraycopy(elementdata, index, elementdata, index + 1, elementcount - index);
elementdata[index] = obj;
elementcount++;
}
arraylist
public void add(int index, e element)
linkedlist
public void add(int index, e element)
再往底層就不一一枚舉了,可以自行檢視。
四、set
然後來看set
1.hashset
我們都知道set的特點就是無序,無重複。hashset 底層是通過雜湊表儲存的,那就是hashmap.我們看下原始碼實現
public hashset()
當然它跟hashmap還是有區別,hashmap是key–value形式的,hashset只是儲存了不重複的key資訊。它是非執行緒安全的。
2.treeset
與hashset採用hash演算法決定元素的儲存位置,treeset採用紅黑樹的資料結構來儲存集合元素。根據key來進行排序,預設是公升序排序,不允許key值為空。非執行緒安全。
呼叫treeset的無參的構造器,並實現comparable介面,實現裡的 compareto(object obj)方法,來比較集合元素的大小,然後按照compareto裡的排序。
3.linkedhashset
底層採用雙向鍊錶實現,可以保證元素的插入順序,又因為是hashset的子類,所以插入的元素不能重複。
五、map
1.hashmap
根據鍵的hascode儲存,可以根據鍵可以快速獲取它,具有很快的訪問速度,非同步允許null,我們知道hashmap儲存方式是key–value.,遍歷map我們知道很多種方法,曾經在面試中碰到這個乙個面試題:
問:entryset和keyset都是遍歷map的這兩個有啥區別?
答:entryset可以一次就取出map的值,而keyset需要遍歷兩次,一次是轉化iterator,再一次才能從中取出。.
2.treemap
有序的key-value集合,紅黑數排序時,根據entry中的key進行排序;entry中的key比較大小是根據比較器comparator來進行判斷的。
3.hashtable
和hashmap一樣,hashtable 也是乙個雜湊表,它儲存的內容是鍵值對(key-value)對映。hashtable 的函式都是同步的,這意味著它是執行緒安全的。它的key、value都不可以為null。此外,hashtable中的對映不是有序的。
java基礎(五) 集合
1.集合與陣列的區別 1 陣列不可變長度,集合可變長度 2 陣列裡可放基本資料型別和物件,集合只能放物件 2.集合框架頂層介面collection的共性方法 增 add object obj addall collection c 刪 clear remove object obj removeal...
任務五。集合的運算
printf 該兩集合是否相等 n xd a,b,x,y printf n printf 該兩個集合的並集結果如下 n bing a,b,x,y printf n printf 該兩個集合的交集結果如下 n jiao a,b,x,y printf n printf 該a b集合的相對補集結果如下 n...
PL SQL複習五 集合方法
1.exists 判斷某集合元素是否存在 declare type ename table type is table of emp.ename type ename table ename table type begin if ename table.exists 1 then dbms out...