1. 什么是集合
集合是一个用来存放数据的容器 (数组也是), 但集合不同的是可以存放不同类型的对象, 并且大小可变
其常用类型有 Set,List,Map. 这些常用的类型往上提取就有了 Collection 和 Map 接口
1.1 Collection 接口的方法
add(E): 添加一个对象
addAll(Collection<? extengds E>): 添加指定集合里的全部对象
clear(): 清空集合
remove(Object): 移除一个对象
removeAll(Collection<?>): 移除集合里的全部对象
contains(Object): 是否包含某个对象
containsAll(Collection<?>): 是否包含某集合的全部对象
isEmpty(): 集合是否为空
size(): 集合对象的个数
retainAll(Collection<?>): 交集, 结果放在调用方法的集合
iterator(): 获取迭代器
1.2 Iterator 迭代器
Collection 接口继承 Iterable 接口, 而 Iterable 接口有 iterator() 方法, 该方法返回一个迭代器 (用于遍历集合)
1.3 iterator 也是一个接口, 里面有四个方法
1.4 Map 接口的方法
containsKey(Object): 是否包含该 Key
containsValue(Object): 是否包含该 Value
get(Object): 根据 Key 获取 Value
put(K,V): 添加一个键值对
remove(Object): 根据 Key 移除一个键值对
2. 常见的三个集合类型
一. List-- 有序, 可重复
1. ArrayList (底层是数组)
add 是最常用的方法了, 我们来看看源码
get
set
remove
toArray
2. LinkedList (底层是双向链表)
add 国际惯例, 看源码
remove
链表实现移除元素的图示
get
set
二. Map
Map 不同于 Collection 集合, Map 存放的是键值对, 且键不能重复
- 1 .HashMap (底层哈希表, Java 中用链表的数组实现, 无序)
- put (相当于 Collection 的 add)
get
remove 也是相同方式就偷懒不放出来了
- 2. TreeMap (底层红黑树, 用 Comparator 排序)
- put
get
remove
三. Set-- 无序, 不可重复
1. HashSet
注意其构造函数, 底层用的是 HashMap, 而 Set 集合存的不是键值对怎么办?
Set 的值存入 Map 的键里面, 而 Map 的全部值存放同一个 Object
其余都和 HashMap 一致, 不再赘述
2. TreeSet
更加和 TreeMap 一致, 懒得说了
源码基于 JDK1.8
API 参考 http://www.matools.com/api/java8
脑图用 XMind
来源: http://www.bubuko.com/infodetail-3321318.html