Java日常學習之集合
以下是本篇文章正文內容,下面內容為自己日常學習總結,可能有些地方不太全面,望諒解
集合
- 一、集合及其應用環境
- 二、集合和陣列的對比
- 三、集合架構和分類
- 1.List
- 2.Set
- 3.Map
- 四、補充
一、集合及其應用環境
Java集合類存放在java.util包中,是一個用來存放物件的容器,
注意:
①集合只能存放物件,不能放基本的資料型別,
Integer等即為物件
②集合存放的都是物件的參考,而非物件本身,
③集合可以存放不同型別,不限數量的資料型別,
適用環境:
當我們需要將一些相同結構的個體整合在一起時,就可以考慮使用集合了,
二、集合和陣列的對比
相似點:
- 都可以存盤多個物件,對外作為一個整體存在
陣列的缺點:
- 長度必須在初始化時指定,且固定不變
- 陣列采用連續存盤空間,洗掉和添加效率低下
- 陣列無法直接保存映射關系
- 陣列缺乏封裝,操作繁瑣
三、集合架構和分類

- Collect 介面存盤物件的特征為不唯一,無序
- List介面存盤物件的特征為不唯一,有序(索引順序)
- Set介面存盤物件的特征為唯一,無序
- Map介面存盤一組鍵值對,key 唯一 無序,value 不唯一 無序
以下將不再復述他們的特征
1.List
-
ArrayList
特性: 線性表中的順序表 實作長度可變陣列 特征: 按索引遍歷元素和隨機訪問速率快 添加和洗掉難 -
LinkedList
特性: 線性雙向鏈表 遍歷和隨機訪問元素效率低 特征: 添加和洗掉效率高 遍歷和訪問效率低

-
常用指令
獲取元素 get(位置) 添加元素到指定位置 add(位置,值) 添加多個元素 addAll 遍歷輸出 toString 修改指定位置值 set(位置,值) 洗掉 remove(位置) -
綜述:
ArrayList 隨機訪問多用 LinkedList 添加和洗掉多,增加了對首尾的操作
2.Set
-
HashSet
特性: 采用Hashtable存盤結構 特征: 添加、查詢和洗掉速度快 無序
hash 基于計算,直接計算到地址
步驟:①計算哈希碼 ②計算存盤位置 ③存入指定位置
-
LinkedHashSet
特性: 采用哈希存盤結構,同時使用鏈表維護次序 特征: 有序 -
TreeSet
特性: 采用二叉樹(紅黑樹)的存盤結構 特征: 有序 查詢速度比List快(按內容查詢) 查詢速度沒有HashSet快
按內容查詢速度:線性表 > 樹 > 哈希表
3.Map
-
HashMap
特性: key 無序 唯一 (Set) Value 無序 不唯一 (Collection) -
LinkedHashMap
特性: 底層結構是hash+鏈表 key 有序(添加順序) 唯一 LinkedHashSet value 無序 不唯一 Collection -
TreeMap
特性: 底層結構是紅黑樹 key 有序(自然順序) 唯一 value 無序 不唯一 Collection -
常用指令
獲取相應元素的值 get("鍵值") 添加元素到指定位置 add(位置,值) 鍵值 keySet() 清除 clear() -
Map遍歷
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while (it.hasNext()){
Entry<String,String> entry = it.next();
System.out.print(entry.getKey());
}
map中沒有迭代器所以要進行遍歷時,先得到所有的key-value組成的set,再進行遍歷set
entrySet()回傳映射所包含的映射關系的Set集合(一個關系就是鍵值對)
四、補充
泛型
可以規定其所加型別
例:ArrayList<Integer(或自定型別)> list = new ArrayList();
改善集合的安全性和方便性,無需考慮添加元素是否一致,加入或取出無需強轉
集合中的遍歷
for
foreach
Iterator(Map中不可用)
謝謝觀看!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/163731.html
標籤:python
