javase集合 溫故而知新

複習javase集合

1、為什麼要有集合?
數組長度需要在初始化時確定大小,數據結構單一、因此集合出現了

2、數組和集合的區別
區別一:數組既可以存儲基本數據類型,又可以存儲引用類型,集合只能存儲引用類型
區別二:數組在初始化的時候就需要確認大小,集合有默認初始大小和擴容機制
區別三:集合類有豐富的封裝方法

UML圖

粗邊框的是常用的的類,虛線邊框是介面

集合的兩大介面

Collection 介面

常用方法:

方法名 說明 返回類型 參數
add 添加元素到末尾 boolean 添加的元素對象
addAll 合併另一個Collection boolean 實現了Collection的集合
contains 檢查是否包含某個元素 boolean 元素對象
containsAll 檢查是否包含集合 boolean 實現了Collection的集合
isEmpty 集合是否為空 boolean 無參
remove 移除元素 boolean 元素對象
removeAll 移除集合中有另一個集合的元素 boolean 實現了Collection的集合
size 返回集合大小 int 無參
toArray 轉換成數組 [ ] 無參

遍歷方式:

  • 迭代器 Iterator (需要刪除元素時推薦用這個)
  • forEach

實現介面:List、Set

List常用方法
方法名 說明 返回類型 參數
add(String item, int index) 添加元素到指定位置 void 索引,元素
addAll(int index, Collection<? extends E> c) 添加集合到指定位置 boolean 索引,集合
get(int index) 獲取值 元素 索引
indexOf(Object o) 判斷List中是否有這個元素,有返回索引,無返回-1 int 元素
listIterator() 返回List迭代器 ListIterator 無參
listIterator(int index) 返回List迭代器,游標移動到參數索引處 ListIterator 索引
remove(int index) 移除List元素 元素 索引
set(int index, E element) 替換元素 元素 索引,元素
subList(int fromIndex, int toIndex) 分割List List 開始索引,結束索引
retainAll(Collection<?> c) 僅保留包含在指定集合中的此集合中的元素 boolean Collection
lastIndexOf(Object o) 返回此列表中指定元素的最後一個發生的索引,如果沒有返回-1 int 元素

List特有遍歷方式:

  • get
  • List迭代器
List常用實現類
  1. ArrayList
    特點:查找速度快,刪除添加元素慢,因為底層使用數組,索引位置變化,大於索引的都要往前移一個,執行緒不安全
  2. LinkedList
    特點:查找速度慢,刪除添加元素速度快,因為底層使用鏈表,需要從頭或者從尾開始一個一個查找,複雜度為O(n),刪除添加只需要改變上一個節點的引用即可,執行緒不安全
Set常用方法
方法名 說明 返回類型 參數
retainAll(Collection<?> c) 僅保留包含在指定集合中的此集合中的元素 boolean Collection
... ... ... ...
Set特點:

無序,存儲元素不可重複,元素必須重寫hashCode和equlas方法

Set常用實現類
  1. HashSet
    特點:元素完全使用HashMap的key來存儲,執行緒不安全

  2. TreeSet
    特點:使用紅黑樹為元素排序,更改默認排序有兩種方式

    • 構造函數中傳入Comparator
    • 元素實現Comparable

    執行緒不安全

  3. LinkedHashSet
    特點:HashSet的子類,使用鏈表來存儲插入的順序,value是LinkedHashMap的key。需要遍歷完全部元素的情況下比HashSet效率高。執行緒不安全

Map介面

常用方法:

方法名 說明 返回類型 參數
put 添加 void key,value
putAll 合併另一個Map void 實現了Map的集合
containsKey 是否包含key boolean key
containsValue 是否包含這個值 boolean value
keySet 返回Map所有的key Set 無參
values 返回Map所有的value Collection 無參
entrySet 返回key value Entry 無參
remove 刪除 value key
remove 如果key和value相匹配則刪除 boolean key,value
size 返回有多少個元素 int 無參
clear 清除 void 無參

遍歷方式:

  • entrySet (最常用 性能好)
  • values
  • keySet
  • Iterator
Tags: