java源码品读(3)— Collection

看完了Iterable接口,接着来看Collection接口,接口中为子集合定义了各种基础的方法,方便我们使用。

这是一个经常在工作中使用到的接口,Collection接口也有很多比较重要的实现,比如AbstractCollection,List,Set,Queue,CollectionView等都是比较经典的实现,值得好好的研究。

一个一个来看:

Collection,全称java.util.Collection,1.8之后又引入了新的stream元素,更加的强大。

  1. int size()
    size()方法返回一个int类型的值,代表集合中元素的个数,如果集合中的元素个数超过正数的最大值,那么只能返回正数的最大值。

  2. boolean isEmpty()
    返回一个boolean类型的值,代表当前集合是否为集合。

  3. boolean contains(Object o)
    返回boolean值代表集合中是否含有这个元素,这个方法比较依赖对象中的重写过的equals方法,如果没有重写equals方法,那么代表是否含有该内存位置的对象。
    参数o如果不是Collection指定的泛型类型,会报ClassCastException异常。
    参数为null,但是Collection要求不能存在null值的时候报NullPointerException异常。

  4. Iterator<E> iterator()
    重写Iterable中的方法,依然未实现,返回元素迭代器的一个方法。

  5. Object[] toArray()

  6. <T> T[] toArray(T[] a)
    两个方法都是将集合中的元素以数组的形式返回,如果集合规定了一个迭代器,那么集合返回的数组会按照迭代器规定的顺序排列后返回。第二个方法会返回一个指定类型的结合,这里的参数T[] a的作用只是提供一个泛型的类型以及一个数组的长度,如果集合的长度大于传入参数a数组的长度,返回的数组长度与集合长度相同,如果集合长度小于传入参数a数组的长度,返回的数组长度与参数a数组的长度相同,但是比集合元素多出来的所有位置的都为null。

    如果指定数组a的运行时类型跟数组内元素的类型不同时,会报java.lang.ArrayStoreException
    如果数组a为null,报NullPointerException

  7. boolean add(E e)

  8. boolean addAll(Collection<? extends E> c)
    作用:7、向集合中添加元素 8、向集合中添加参数集合的所有元素
    返回:boolean类型的值,是否添加成功
    异常:

    1. 如果集合不支持添加操作,报UnsupportedOperationException
    2. 如果e的类型被集合指定不允许添加,报ClassCastException
    3. 如果元素的某些属性导致元素不能被添加到集合中,报IllegalArgumentException
    4. 如果元素不能在这个时候被添加到集合中,报IllegalStateException
    5. 如果元素为null,但是集合中不允许出现null元素,报NullPointerException.
  9. boolean remove(Object o)

  10. boolean removeAll(Collection<?> c)
    作用:9、移除集合中的指定元素 10、移除原集合中所有在参数集合中出现过的元素
    返回:boolean类型的值,是否删除成功
    异常:

    1. 指定的元素o的运行时类型与集合指定的泛型不匹配时,报ClassCastException
    2. 指定对象中包含一到多个null元素,但是集合中不允许出现null时,报NullPointerException
    3. 如果该集合不支持移除操作,报UnsupportedOperationException
  11. boolean containsAll(Collection<?> c)
    作用:检验该集合是否包含指定集合的所有元素
    返回:boolean类型的值,是否包含
    异常:

    1. 参数集合中有元素的类型跟原集合指定的泛型类型不一致时,报ClassCastException
    2. 参数集合中包含null元素,但原集合不允许出现null时,报NullPointerException
  12. default boolean removeIf(Predicate<? super E> filter)
    作用:删除集合中所有满足删除条件的元素
    返回:boolean类型的值,是否有成功的删除
    异常:

    1. 如果判断条件为null时,报NullPointerException
    2. 如果满足条件的元素不能被移除,报UnsupportedOperationException

    补充:这个是JDK1.8新加的方法,配合Predicate接口和lambda表达式进行使用。

  13. boolean retainAll(Collection<?> c)
    作用:原集合只保留在指定集合中存在的元素,简单点说就是取交集
    返回:boolean类型的值,如果原集合发生改变返回true
    异常:包含contains方法和remove方法的所有可能抛出异常

  14. void clear()
    作用:清楚集合内的所有元素
    异常:如果clear操作不被集合支持,抛出UnsupportedOperationException异常

  15. default Stream<E> stream()

  16. default Stream<E> parallelStream()
    1.8新加的方法,结合Stream使用,简单点理解就是一个增强型的迭代器。
    两个方法前者获取一个单通道的流处理起,后者获得一个多通道的流处理器

这一段看的代码当中了解到的1.8的新特性主要是流Stream和lambda,有机会整理一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值