java.util.Collection是List, Set, Queue的共同父接口,它规定了所有集合类的共通方法。
1)提供一个无参的构造函数
2)提供一个Collection类型的参数的构造函数,用于快速初始化
集合持有元素的的equals和hashCode方法非常重要。 集合判断元素是否相等,依赖equals的判断。 当使用hash表相关的集合时(hashMap, HashTable, HashSet),先根据hashCode定位到bucket, 然后再根据equals比对。所以一定要满足两个对象equals相等,则hashCode一定相等,反之则不一定。
主要分为可重复列表,不可重复列表和关联字典
1)size()
返回当前集合中元素个数
isEmpty()
true -> 当前集合元素为0,即size() == 0
false -> 当前集合元素不为0
iterator()
返回可用于该集合的迭代器
toArray()
将集合转化为数组(常用)
add(E e), remove(E e)
添加到集合和从集合中移除元素
6)clear()
将集合清空
7)stream(), parallelStream() (since JDK8)
将集合转化为串行流,并行流。 (常用)
迭代器接口,统一了集合的遍历方式。 Collection接口继承了Iterable接口,意味着所有的Collection实现类都是Iterable。
该接口提供了三个方法:
1) Iterator iterator();
核心方法,返回基于该集合的迭代器
2)default void forEach(Consumer super T> action)
since jdk8, 提供集合上便捷的迭代方法(很实用)
3)default Spliterator spliterator()
since jdk8, 分流器
Collection之所以没有提供随机存取相关的方法,是因为Collection不仅是List的父接口,也是Set的父接口,而Set是不支持随机存取的。也由此可以推测Collection的方法跟Set的方法类似,而List会在Collection的基础之上新增一些方法。
集合工具类,提供了一系列有用的工具类,如:
1)sort(List list, Comparator c)
支持集合的快速排序
2)binarySearch(List list, T key)
支持集合元素的二分查找,当然前提集合是有序的
3)reverse(List list)
支持集合反转操作
4)shuffle(List list)
支持集合打乱(洗牌)
5)copy(List dest, List src)
支持集合元素复制
6)min, max
支持获取集合中最小,最大元素
可快捷处理数组的工具类,实用方法有:
1)sort(int[] a)
数组的快速排序,还支持short, char, long等各种变体
binarySearch(int[] a)
数组的二分查找,前提条件是已排序
equals(int[] a, int[] b)
数组的比较
copyOf(int[] a, int )
数组的扩展,比较常用
asList(T… a)
将数组转化为集合(常用),不过要注意转化后的集合大小是不可变的
toString(int[] a)
打印数组
7)Stream(T[])
将数组转化为stream流(常用)
本节分析了Collection接口, 了解了Collection接口的核心方法,并学习了集合相关的两个工具类:Collections和Arrays。