2. Collection接口

java.util.Collection是List, Set, Queue的共同父接口,它规定了所有集合类的共通方法。

Collection对所有的实现类进行了约定(无法从语言本身强制):

1)提供一个无参的构造函数
2)提供一个Collection类型的参数的构造函数,用于快速初始化

equals and hashCode

集合持有元素的的equals和hashCode方法非常重要。 集合判断元素是否相等,依赖equals的判断。 当使用hash表相关的集合时(hashMap, HashTable, HashSet),先根据hashCode定位到bucket, 然后再根据equals比对。所以一定要满足两个对象equals相等,则hashCode一定相等,反之则不一定。

Collection直接相关的重要子接口

List, (Set, SortedSet), (Map, SortedMap)

主要分为可重复列表,不可重复列表和关联字典

Collection重要方法

1)size()
返回当前集合中元素个数

  1. isEmpty()
    true -> 当前集合元素为0,即size() == 0
    false -> 当前集合元素不为0

  2. iterator()
    返回可用于该集合的迭代器

  3. toArray()
    将集合转化为数组(常用)

  4. add(E e), remove(E e)
    添加到集合和从集合中移除元素

6)clear()
将集合清空

7)stream(), parallelStream() (since JDK8)
将集合转化为串行流,并行流。 (常用)

Iterable接口

迭代器接口,统一了集合的遍历方式。 Collection接口继承了Iterable接口,意味着所有的Collection实现类都是Iterable。

该接口提供了三个方法:
1) Iterator iterator();
核心方法,返回基于该集合的迭代器

2)default void forEach(Consumer<? super T> action)
since jdk8, 提供集合上便捷的迭代方法(很实用)

3)default Spliterator spliterator()
since jdk8, 分流器

Collection 为什么没有get(int index)这类的方法?

Collection之所以没有提供随机存取相关的方法,是因为Collection不仅是List的父接口,也是Set的父接口,而Set是不支持随机存取的。也由此可以推测Collection的方法跟Set的方法类似,而List会在Collection的基础之上新增一些方法。

Collection Framework 周边相关的帮助类

Collections

集合工具类,提供了一系列有用的工具类,如:
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
支持获取集合中最小,最大元素

Arrays

可快捷处理数组的工具类,实用方法有:
1)sort(int[] a)
数组的快速排序,还支持short, char, long等各种变体

  1. binarySearch(int[] a)
    数组的二分查找,前提条件是已排序

  2. equals(int[] a, int[] b)
    数组的比较

  3. copyOf(int[] a, int )
    数组的扩展,比较常用

  4. asList(T… a)
    将数组转化为集合(常用),不过要注意转化后的集合大小是不可变的

  5. toString(int[] a)
    打印数组

7)Stream(T[])
将数组转化为stream流(常用)

小结

本节分析了Collection接口, 了解了Collection接口的核心方法,并学习了集合相关的两个工具类:Collections和Arrays。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值