集合的分类(重点)
系列1:
Collection接口: 存储值
List子接口: 有下标,0开始,顺序
ArrayList 实现类 线性存储结构,元素挨着, 适合查询,不适合更新,线程不安全,效率高,不同步,速度快
LinkedList 实现类 链式存储结构,元素不挨着,适合更新,不适合查找
Vector 实现类 线程安全,效率低,同步
Set子接口: 没有下标,不能保证顺序,吞并重复元素
HashSet 实现类 : 哈希表存储 自动去重
TreeSet 实现类 : 红黑树存储 可以自然排序
系列2:
Map接口:存键值对
HashMap 实现类: 线程不安全,效率高,不同步,速度快
Hashtable 实现类: 线程安全,效率低,同步
TreeMap 实现类 : 自然排序
ArrayList
ArrayList 实现类 线性存储结构,元素挨着, 适合查询,不适合更新,线程不安全,效率高,不同步,速度
方法名 | 含义 | 返回值 |
---|---|---|
add(元素) | 尾部追加 | 布尔 |
add(下标,元素) | 在下标前插入元素 | 无 |
size() | 集合大小 | int |
remove(下标) | 根据下标删除元素 | E |
remove(元素) | 根据元素删除 | boolean |
get(下标) | 根据下标获得一个元素 | E |
set(下标,元素) | 根据下标修改元素 | 无 |
clear() | 清除集合 | |
indexOf()/lastIndexOf() | 元素查找 | int -1 |
LinkedList 实现类 链式存储结构,元素不挨着,适合更新,不适合查找
Vector 实现类 线程安全,效率低,同步
HashSet集合
没有下标的线性集合,不能保证元素的顺序,会自动去重,内存: 哈希表
构造方法:
new HashSet(); new HashSet(Collection c);
方法名 | 含义 | 返回值 |
---|---|---|
add() | 尾部增加,不能插入 | |
remove(元素) | 删除对应元素 | |
size() | 大小 | |
iterator() | 返回该集合的迭代器(专门用于Collection元素遍历) |
TreeSet集合
内存存储:红黑树(平衡二叉树), 存储的元素会实现自然排序(得有排序算法)。
构造方法:
new TreeSet(); new TreeSet(Collection c);//传其他其他 new TreeSet(Comparator c);//传入比较器,比较算法
方法:
方法 | 含义 | 返回值 |
---|---|---|
add(元素) | 添加 | |
size() | 集合大小 |
HashMap集合
Map系列的集合,HashMap和Hashtable区别?
1.HashMap线程不安全,效率高,速度高,不同步。
2.HashMap支持键和值可以为null的。
HashMap集合特点: 存储键值对 key-value
构造方法:
new HashMap<K,V>();
方法:
方法名 | 含义 | 返回值 |
---|---|---|
put(键,值) | 添加元素/修改元素 | V |
size() | 集合大小 | int |
get(键) | 通过键取对应值 | V |
remove(键) | 通过键删除整个键值对 | V |
containsKey(键) | 判断是否存在这个键 | boolean |
keySet() | 以Set集合形式返回key集合(遍历) | Set |
注意:put两个用法:键不同是增加元素,键相同修改元素。
TreeMap
存储:红黑树,自然排序(Comparator比较器 ; 使用键提供排序,键类型必须实现Comparable)。