Java基礎總結記錄 五 集合

2021-09-11 19:39:51 字數 2266 閱讀 7680

集合類在應用中常常用到,裡面的知識也是比較多的,總結一下常用的一些集合類。

一、集合圖

針對這張圖來展開集合之路。

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