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