搜索速度快,增刪慢java
線程安全,效率低(synchronized鎖)git
有序,可重複程序員
底層爲雙向鏈表面試
搜索速度慢,增刪塊算法
/** * 解決方案; * 一、List<String> list = new Vector<>(); * 二、List<String> list = Collections.synchronizedList(new ArrayList<>()); * 三、List<String> list = new CopyOnWriteArrayList<>(); * CopyOnWriteArrayList 使用的lock鎖的機制 */
Set 注重獨一無二的性質,該體系集合用於存儲無序元素(存入和取出的順序不必定相同),值不能重複。對象的相等性本質是對象 hashCode 值判斷的,若是想要讓兩個不一樣的對象視爲相等的,就必須覆蓋 Object 的 hashCode 方法和 equals 方法。設計模式
HashSet 存儲元素的順序是無序的,是按照哈希值來存的因此取數據也是按照哈希值取得。數組
HashSet 首先判斷兩個元素的哈希值,若是哈希值同樣,接着會比較 equals 方法 若是 equls 結果爲 true ,HashSet 就視爲同一個元素。若是 equals 爲 false 就不是 同一個元素安全
HashSet 經過 hashCode 值來肯定元素在內存中的位置。一個 hashCode 位置上能夠存放多個元素markdown
HashSet 容許有 null 值。數據結構
HashSet 不是線程安全的
一個有序的集合,它的做用是提供有序的Set集合,支持add、remove、get等方法
比較此對象與指定對象的順序。若是該對象小於、等於或大於指定對象,則分別返回負整 數、零或正整數
/** * 同理可證 : ConcurrentModificationException * //一、Set<String> set = Collections.synchronizedSet(new HashSet<>()); * //二、Set<String> set = new CopyOnWriteArraySet<>(); */
HashMap 最多隻容許一條記錄的鍵爲 null,容許多條記 錄的值爲 null。
HashMap 非線程安全
全部訪問HashTable的線程都必須競爭同一把鎖
數據分紅一段一段地存儲,而後給每一段數據配一把鎖,當一個線程佔用鎖訪問其中一個段數據的時候,其餘段的數據也能被其餘線程訪問。
HashMap能夠接受null鍵值和值,而Hashtable則不能; HashMap是非synchronized; HashMap很快;
以及HashMap儲存的是鍵值對
看完美團、字節、騰訊這三家的一二三面試問題,是否是感受問的特別多,可能我們真的又得開啓面試造火箭、工做擰螺絲的模式去準備下一次的面試了。
開篇有說起我但是足足背下了Java互聯網工程師面試1000題,多少仍是有點用的呢,換湯不換藥,無論面試官怎麼問你,抓住本質便可!能讀到此處的都是真愛,因此福利也爲你準備,這份1000題免費送你!點擊這裏免費領取
並且從上面三家來看,算法與數據結構是必備不可少的呀,所以我建議你們能夠去刷刷這本左程雲大佬著做的 《程序員代碼面試指南 IT名企算法與數據結構題目最優解》,裏面近200道真實出現過的經典代碼面試題。
以上所說起的所有Java面試學習的PDF及筆記,如若皆是你所須要的,那麼均可發送給你!