[Android面試]Collection中的 List、Set 區別

Java 中的集合是我們常用到的,他們的區別和原理就需要更加的瞭解才行。

Collection 是集合結構的父接口。其中包含List 和 Set.

List 包含:(元素有序可重複)

① ArrayList 本質上是一個可改變大小的數組.當元素加入時,其大小將會動態地增長.內部的元素可以直接通過get與set方法進行訪問.元素順序存儲 ,隨機訪問很快刪除非頭尾元素慢,新增元素慢而且費資源 ,較適用於無頻繁增刪的情況 ,比數組效率低,如果不是需要可變數組,可考慮使用數組 ,非線程安全.

② LinkedList 是一個雙鏈表,在添加和刪除元素時具有比ArrayList更好的性能.但在get與set方面弱於ArrayList. 適用於 :沒有大規模的隨機讀取,大量的增加/刪除操作.隨機訪問很慢增刪操作很快,不耗費多餘資源 ,允許null元素,非線程安全.

③ Vector (類似於ArrayList)但其是同步的,開銷就比ArrayList要大。如果你的程序本身是線程安全的,那麼使用ArrayList是更好的選擇。 Vector和ArrayList在更多元素添加進來時會請求更大的空間。Vector每次請求其大小的雙倍空間,而ArrayList每次對size增長50%.

Set 包含:(元素無序不可重複)

①  HashSet 底層使用 hashCode()實現 需要覆蓋 hashCode()和 equals()方法 數據無序

②  TreeSet 底層是二叉樹實現的 數據是排好序的




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章