目錄
前言:
單列集合:? ? ?
set與list的區(qū)別:
雙列集合:
map的特點:
總結:
?文章來源地址http://www.zghlxwxcb.cn/news/detail-591795.html
前言:
? ? ? ? ? ? ? ? JAVA中為我們提供了很多集合,這些集合都有自己很獨特的特點,因此我們要學習所有的集合,但是在學習所有的集合之前,我們還是先為大家介紹一下JAVA的集合體系結構,這樣有利于大家更好的理解整個JAVA集合框架。
整個集合其實都可以分為兩大類:單列集合與雙列集合
單列集合:? ? ?
Java中的單列集合指的是一種只包含一個元素的集合,也被稱作為單元素集合或者是單值集合,單列集合一次只能添加一個元素。在Java中,單列集合主要有以下幾種:
1. Singleton Set
Singleton Set是一種只包含一個元素的集合,并且該元素不允許為空。Singleton Set中只有一個元素,所以它的size()方法返回值為1。
示例代碼:
Set<String> singletonSet = Collections.singleton("hello");
2. Singleton List
Singleton List也是一種只包含一個元素的集合,但是它是有序的,并可以包含重復元素。Singleton List中只有一個元素,所以它的size()方法返回值為1。
示例代碼:
List<String> singletonList = Collections.singletonList("hello");
需要注意的是,Singleton集合是不可變的,即不能向其中添加或刪除元素。如果需要添加或刪除元素,需要創(chuàng)建一個新的集合對象并賦值。此外,Singleton集合的元素只能通過迭代器進行訪問。
set與list的區(qū)別:
list和set是Java中兩種常用的集合類型,它們的主要區(qū)別在于以下幾個方面:
1. 元素順序
list是有序集合,即它維護元素的插入順序,并且可以根據(jù)元素的索引(即插入順序)進行訪問和操作。set是無序集合,它不維護元素的插入順序,并且不能根據(jù)元素的索引進行訪問和操作。
2. 元素的唯一性
list可以包含重復元素,即同一個元素可以出現(xiàn)多次;set元素是唯一的,即同一個元素只能出現(xiàn)一次。
3. 實現(xiàn)方式
list可以通過數(shù)組或鏈表實現(xiàn);set可以通過哈希表或樹結構實現(xiàn)。因此,list的訪問速度較快,但是添加、刪除元素和查找元素需要較長的時間;而set的添加、刪除元素和查找元素速度較快(平均時間復雜度為O(1)),但是訪問元素需要較長的時間(時間復雜度為O(n))。
總之,如果需要維護元素的順序、允許包含重復元素、并且需要根據(jù)索引進行訪問和操作,應該使用list;如果需要保證元素的唯一性、不需要維護元素的順序,并且查找、添加與刪除操作的性能要求較高,應該使用set。
雙列集合:
Java中的雙列集合指的是一種包含兩個元素的集合,它們可以存儲類型不同的鍵值對,通常用于構建關聯(lián)數(shù)組、映射等數(shù)據(jù)結構。在Java中,雙列集合主要有以下幾種:
1. Map
Map是一種鍵值對映射的集合,其中鍵和值都可以是任意類型的對象。Map中的鍵是唯一的,因此不能存在重復的鍵。常用的實現(xiàn)類包括HashMap、LinkedHashMap、TreeMap等。
示例代碼:
Map<String, Integer> map = new HashMap<>();
map.put("Java", 100);
map.put("Python", 90);
map.put("C++", 80);
map常見的實現(xiàn)類:?
1. Hashtable
Hashtable是一種線程安全的鍵值對映射集合,與HashMap類似,但它的所有方法都是同步的。Hashtable也不允許鍵和值為空。Hashtable的實現(xiàn)方式是通過哈希表實現(xiàn)的。
示例代碼:
Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("Java", 100);
hashtable.put("Python", 90);
hashtable.put("C++", 80);
2. LinkedHashMap
LinkedHashMap是一種維護插入順序的Map,它記錄了元素的插入順序,并可以按照插入順序進行遍歷。LinkedHashMap是通過哈希表和雙向鏈表實現(xiàn)的。
示例代碼:
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Java", 100);
linkedHashMap.put("Python", 90);
linkedHashMap.put("C++", 80);
3. TreeMap
TreeMap是一種按照鍵的自然順序或者比較器順序進行遍歷的有序Map。默認情況下,TreeMap按照鍵的自然順序進行遍歷,如果需要自定義排序規(guī)則,可以通過實現(xiàn)Comparator接口實現(xiàn)。TreeMap是通過紅黑樹實現(xiàn)的。
示例代碼:
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Java", 100);
treeMap.put("Python", 90);
treeMap.put("C++", 80);
需要注意的是,Java中的雙列集合都是基于Map接口實現(xiàn)的,因此它們都具有Map接口的基本方法,如put、get、containsKey等。在使用雙列集合時,需要根據(jù)具體的使用場景和性能要求選擇合適的實現(xiàn)類。
map的特點:
Map是一種鍵值對的數(shù)據(jù)結構,它的特點有以下幾個:
1. 存儲方式:Map 以鍵值對的形式來儲存數(shù)據(jù),即每個鍵都與一個值相關聯(lián)。這種方式方便了數(shù)據(jù)的快速查找和訪問,比如可以通過鍵快速獲取對應的值。
2. 獨一無二的鍵:Map 中的鍵是唯一的,即同一時刻只能存在一個與給定鍵相關聯(lián)的值。如果插入的鍵已經存在,則新插入的值會覆蓋舊值。
3. 無序性:Map 中的鍵值對是無序的,不像數(shù)組和列表那樣有固定的順序。我們可以根據(jù)鍵來進行查找和訪問,而不關心它們在 Map 中的位置。
4. 可以存儲不同類型的值:Map 中的鍵值對可以存儲不同類型的數(shù)據(jù),這使得 Map 成為存儲和操作各種類型數(shù)據(jù)的理想數(shù)據(jù)結構。
5. 可以動態(tài)修改:Map 是一種動態(tài)數(shù)據(jù)結構,它可以根據(jù)需要進行插入、刪除或修改鍵值對,這使得它非常靈活和實用。
總結:
? ? ? ? 本文詳細的介紹了單列集合與雙列集合,為我們搭建了集合的一個基本的體系構架,后面我們也會一步一步的完善這些構架里面的內容。
如果我的內容對你有幫助,請點贊,評論,收藏。創(chuàng)作不易,大家的支持就是我堅持下去的動力!
?文章來源:http://www.zghlxwxcb.cn/news/detail-591795.html
?
到了這里,關于【從零開始學習JAVA | 第二十三篇】集合體系結構的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!