Map、Set、List集合差別及聯繫

Map、Set、List集合差別及聯繫

一、數組Array和集合的區別

  1. 數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型)
  2. JAVA集合可以存儲和操作數目不固定的一組數據。
  3. 若程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類 庫,array不適用。
  4. 使用相應的toArray()和Arrays.asList()方法可以相互轉換。

二、集合

集合類存放於java.util包中。
  集合類存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。
  集合類型主要有3種:set(集)、list(列表)和map(映射)。

三、set(集)、list(列表)和map(映射)三者關係

在這裏插入圖片描述在這裏插入圖片描述

四、List、Map、Set的區別與聯繫

一、結構特點

1、 ListSet是存儲單列數據的集合,Map是存儲鍵值對這樣的雙列數據的集合;
2、 List中存儲的數據是有順序的,並且值允許重複;
Map中存儲的數據是無序的,它的鍵是不允許重複的,但是值是允許重複的;
Set中存儲的數據是無順序的,並且不允許重複,但元素在集合中的位置是由元素的hashcode決定,即位置是固定的(Set集合是根據hashcode來進行數據存儲的,所以位置是固定的,但是這個位置不是用戶可以控制的,所以對於用戶來說set中的元素還是無序的)。

二、實現類

1、List接口有三個實現類:
1.1 LinkedList 基於鏈表實現,鏈表內存是散列的,增刪快,查找慢;
1.2 ArrayList 基於數組實現,非線程安全,效率高,增刪慢,查找快;
1.3 Vector 基於數組實現,線程安全,效率低,增刪慢,查找慢;

2、Map接口有四個實現類:
2.1 HashMap
基於 hash 表的 Map 接口實現,非線程安全,高效,支持 null 值和 null 鍵;
2.2 HashTable
線程安全,低效,不支持 null 值和 null 鍵;
2.3 LinkedHashMap
是 HashMap 的一個子類,保存了記錄的插入順序;
2.4 SortMap 接口
TreeMap,能夠把它保存的記錄根據鍵排序,默認是鍵值的升序排序
3、Set接口有兩個實現類:
3.1 HashSet
底層是由 Hash Map 實現,不允許集合中有重複的值,使用該方式時需要重寫 equals()和 hash Code()方法;
3.2 LinkedHashSet
繼承於 HashSet,同時又基於 LinkedHashMap 來進行實現,底層使用的是 LinkedHashMap

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