Listhtml
List 承載的實體實現 Comparable、Comparator 接口可讓 List 實現快速排序 Collections.synchronizedList(list); 可使 List 線程安全 new ArrayList(new String[]) 以及 List.toArray() 能夠實現 List、 Array 互轉 Arrays.asList() 返回的 List 是 Arrays 的內部類, 它未提供寫操做, 因此是隻讀的
Mapjava
無序; 線程不安全;android
Hashtablegit
默認容量爲 11, 默認負載因子 0.75程序員
當 size > 容量 * 負載因子 時, 容量會擴容到 2N +1
HashMapgithub
默認容量爲16, 容量 2的N次方; 默認負載因子爲 0.75面試
手動設置的容量基本會被忽略, 設置的容量若是大於最大容量, 容量會被重設回最大容量 當 size > 容量 * 負載因子 時, 容量會擴容兩倍
Hashtable 和 HashMap 的對比算法
HashMap 拋棄了 Hashtable 線程安全特性並通過一系列特定設定使非線程安全場景的 Map 結構數據存取更加高效數組
ConcurrentHashMap安全
LinkedHashMap
TreeMap
Collections.synchronizedMap(map); 可使線 Map 程安全. Map 的 key 須要具備不可變性而且重寫 equals() 和 hashCode() 方法 HashMap 和 Hashtable 的底層數據結構是一個數組, 結合了順序表和單向鏈表的形式,內部的每個節點都是 Node 對象
Set (這部分沒有用心寫)
線程不安全, 無序且元素不能重複
底層使用了 map 進行實現(HashMap & LinkedHashMap),借用 map 的 key 不能重複的特性, 來實現不重複性
HashSet、LinkedHashSet、TreeSet 的區別
都沒法保證線程安全, 底層都使用 map 實現不重複性(因此特性也在 map 中),Set 都不能使用 get(index) 的方法獲取元素, 只能使用 iterator 進行獲取. 其中:
Collections.synchronizedSet(set);可使Set線程安全
SparseArray、SparseBooleanArray、SparseIntArray、SparseLongArray
適用場景爲 key 可使用 int 類型而且數據量在千級之內(二分查找的緣由)
使用 long 做爲 key 其餘與 SparseArray 無異; 該類在 androidx.collection 包
ArrayMap
同 ArrayMap 是 Android 對 set 的一個實現
更多Android高級面試合集放在github上面了
須要的小夥伴能夠點擊關於我 聯繫我獲取
很是但願和你們一塊兒交流 , 共同進步
也能夠掃一掃, 目前是一名程序員,不只分享 Android開發相關知識,同時還分享技術人成長曆程,包括我的總結,職場經驗,面試經驗等,但願能讓你少走一點彎路。