Java學習|集合小結

List、Set與Map

文章目錄

1)List
2)Set
3)Map


概述

  • 在寫程序時不知道究竟需要多少對象,需要在控件不足時自動擴增容量,則需要使用容器類庫
  • Collection、List、Set、Map都是接口,不能實例化,繼承自它們的 ArrayList, Vector, HashTable, HashMap是具象class,這些纔可被實例化。
  • List和Set都繼承至Collection接口,Map爲獨立接口

List

  • 包括ArrayList,Vector,LinkedList
  • 有序,可重複;List可以動態增長,查找元素效率高,插入刪除元素效率低,因爲會引起其他元素位置改變。
  • ArrayList
    • 底層是數組,查詢快,增刪慢,線程不安全,效率高
  • Veator
    • 底層是數組,查詢快,增刪慢,線程安全,效率低
  • LinkedList
    • 底層是鏈表,查詢慢,增刪快,線程不安全,效率高
  • 知道是List,但是不知道是哪個List,就用ArrayList。

Set

  • 包括HashSet、LinkedHashSet、TreeSet
  • 無序,唯一,無法用下標來取得想要的值;檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
  • HashSet
    • 底層是哈希表,無序唯一,依賴hashCode()和equals()來保證元素唯一性
  • LinkedHashSet
    • 底層是鏈表和哈希表,有序唯一,由鏈表保證有序,由哈希表保證唯一
  • TreeSet
    • 底層是紅黑樹,有序唯一,自然排序和比較器排序保證元素排序,根據比較的返回值是否爲0來保證元素的唯一性
  • 知道是Set,但是不知道是哪個Set,就用HashSet。

Map

  • 包括HashMap、LinkedHashMap、TreeMap、HashTable
  • 適合存儲鍵值對的數據
  • HashMap
    • 底層是哈希表,非線程安全
    • 無序的,方法不是同步的,不是線程安全,效率較高,允許null值。
  • HashTable
    • 無序的,方法是同步,線程安全,效率較低,不允許有null值。
  • TreeMap
    • 底層是紅黑樹,非線程安全
    • 有序的,主要用於排序,可以自定義排序規則
  • LinkedHashSet
    • 主要保證有序的集合
  • java中String數組和List的互相轉化

參考

java中Map,List與Set的區別
java 常用集合list與Set、Map區別及適用場景總結
Java集合中List,Set以及Map等集合體系詳解

發佈了45 篇原創文章 · 獲贊 8 · 訪問量 7747
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章