集合框架面試題

2022-06-21 03:48:06 字數 1296 閱讀 8781

arraylist和linkedlist的大致區別:

1.arraylist是實現了基於動態陣列的資料結構,linkedlist是基於鍊錶結構。

2.對於隨機訪問的get和set方法,arraylist要優於linkedlist,因為linkedlist要移動指標。

3.對於新增和刪除操作add和remove,linkedlist比較佔優勢,因為arraylist要移動資料。

(所以在我們進行對元素的增刪查操作的時候,進行查操作時用arraylist,進行增刪操作的時候最好用linkedlist)

執行緒是否安全: hashmap 是非執行緒安全的,hashtable 是執行緒安全的;hashtable 內部的方法基本都經過synchronized修飾。(如果你要保證執行緒安全的話就使用 concurrenthashmap 吧!);

效率: 因為執行緒安全的問題,hashmap 要比 hashtable 效率高一點。另外,hashtable 基本被淘汰,不要在**中使用它;

對null key 和null value的支援: hashmap 中,null 可以作為鍵,這樣的鍵只有乙個,可以有乙個或多個鍵所對應的值為 null。。但是在 hashtable 中 put 進的鍵值只要有乙個 null,直接丟擲 nullpointerexception。

初始容量大小和每次擴充容量大小的不同 : ①建立時如果不指定容量初始值,hashtable 預設的初始大小為11,之後每次擴充,容量變為原來的2n+1。hashmap 預設的初始化大小為16。之後每次擴充,容量變為原來的2倍。②建立時如果給定了容量初始值,那麼 hashtable 會直接使用你給定的大小,而 hashmap 會將其擴充為2的冪次方大小(hashmap 中的tablesizefor()方法保證,下面給出了源**)。也就是說 hashmap 總是使用2的冪作為雜湊表的大小,後面會介紹到為什麼是2的冪次方。

底層資料結構: jdk1.8 以後的 hashmap 在解決雜湊衝突時有了較大的變化,當鍊表長度大於閾值(預設為8)時,將鍊錶轉化為紅黑樹,以減少搜尋時間。hashtable 沒有這樣的機制。

總結:

hashmap在put方法中,它使用hashcode()和equals()方法。當我們通過傳遞key-value對呼叫put方法的時候,hashmap使用key hashcode()和雜湊演算法來找出儲存key-value對的索引。如果索引處為空,則直接插入到對應的陣列中,否則,判斷是否是紅黑樹,若是,則紅黑樹插入,否則遍歷鍊錶,若長度不小於8,則將鍊錶轉為紅黑樹,轉成功之後 再插入。

集合面試題

list,set集合與collection有直接的關係而map屬於間接的關係 list的特點 可以儲存重複的資料,有順序 set的特點 不能儲存重複的資料,沒有順序 map的特點 根據鍵值對保持資料,鍵不可以重複,值可以重複沒有順序 arraylist 優點 查詢速度較快,使用新增和刪除功能較慢 l...

面試題 集合

set 無序 儲存單列資料的集合,儲存的資料是無順序的,並且不允許重複,最常用的是hashset list 有序 儲存單列資料的集合,儲存的資料是有順序的,並且值允許重複,最常用的是arraylist map 儲存鍵值對這樣的雙列資料集合,儲存的資料是無序的,它的鍵是不允許重複的,但是值是允許重複的...

面試題集合

1.free 函式入參是乙個void 指標 它是如何知道被指向的大小的?2.查詢二叉樹中第k小的元素?3 資料庫為什麼使用b樹作為儲存資料的資料結構?4.c lambda表示式的特性,什麼情況下使用?5.c c 程式如何控制執行到某個特定記憶體位址?6.二叉堆的維護?7.lru演算法的實現?金融量化...