集合
多個變量的集合體
集合可以放多個元素 不定長
ArrayList有序 可重復
add()添加 元素
add(int index, E element)將指定的元素插入此列表中的指定位置
get()獲取 索引位置的元素
size()獲取集合中元素個數
remove(int index)移除此列表中指定位置上的元素。
remove(Object o)移除o元素,
removeAll(Collection c)
移除此 collection 中那些也包含在指定 collection 中的所有元素
contains(Object o)
如果此 collection 包含指定的元素,則返回 true。
clear()移除此列表中的所有元素。
集合的結構圖
接口
collection? ? ? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? Map
List? ? ? |? Set? ? ? ? ? ? |
類
ArrayList? HashSet? |? HashMap Hashtable
LinkedList? TreeSet
Vector
Stack
ArrayList 和LinkedList
效率
實際測試效果
元素添加刪除 耗時
ArrayList? 底層 object數組 訪問效率高 操作效率首元素低
LinkedList 底層 雙向鏈表 操作效率首元素高 訪問效率低
Vector? ? 底層
List有序 可重復
Set 無序 不可重復
泛型
限定 集合所能容納的元素泛型
Vector和ArrayList 區別
Vector 線程安全
ArrayList 線程不安全
HashMap Hashtable區別
null? ? ? 不為空
不安全? ? ? 安全
Stack 棧 先進后出 后進先出
push 壓棧
pop? 出棧
peek 查看棧頂元素
Set
不可重復? hash值 不一樣則對象不一樣
equals 方法
無序 存入的順序和取出的順序不同
List 是接口類型 ,可以定義對象引用,然后用他的實現類(比如 java.util.ArrayList java.util.LinkedList等)去初始化它,而不能new List()來初始化 ;
Set 也類似
Set集合遍歷方式
1.toString();
轉成Object[]
2.for的增強型
for(Object x:Set集合){
}
3.迭代器Iterator
Iterator it=set集合.iterator();
it.hashNext();//判斷是否有元素
it.next();//取值
Collections.sort(list);
將List 集合中的元素 升序排序
注意 List 集合中的元素必須是 可比較的 Comparable
Comparable
int ComparTo(比較對象)對象比較值
0? ? 咱倆相等
整數 我比你大
負數 我比你小
作業
實現從大到小排序
排序的第二種形式
Compareator
int compare(Object o,Object o1) 方法 定義 比較規則
第一種形式 要求元素 必須實現Comparable
第二種形式 第三方仲裁 比較規則 策略模式
hm.keySet();//key set 集合
hm.values();//value的集合
hm.entrySet();//返回鍵值對的集合
put(key,value);存值 將值以鍵值對形式保存
get(key);取出key對應的value值
keySet();返回key的value值
values(); 返回value值的 collection集合。
entrySet(); 返回Entry鍵值的 set集合。
clear()? 從此映射中移除所有映射關系。
clone()? 返回此 HashMap 實例的淺表復制:并不克隆鍵和值本身。
containsKey(Object key)? 如果此映射包含對于指定的鍵的映射關系,則返回 true。
containsValue(Object value) 如果此映射將一個或多個鍵映射到指定值,則返回 true
remove(Object key)? 如果此映射中存在該鍵的映射關系,則將其刪除。
重要的東西
基本用法
數據結構
key 不能重復 value后面覆蓋前面
HashMap 允許null key可以有一個 value可以任意個
concurrent 線程同步
Collections.synchronizedMap();//將hashMap變成安全的
HashTable? HashMap
1.是否安全? ? 安全? ? ? 不安全
2.是否為空? ? 不允許? ? ? 允許