Thinking in Java之深入Collection源码学习

       前言

                   上一篇文章对Java集合API框架有了一个简单的了解。对于各个接口,实现类都有了一个

             简单的认识。上文链接:http://blog.csdn.net/kiritor/article/details/8868943 接下来笔者将

             深入JDK源码去解决上一篇文章遗留下来的问题,并做一些更加深入的探究与思考。

       Collection接口设计

                    Collection接口是最基本的容器接口,继承至Iterable接口(主要通过其进行产生迭代器

             逐一的进行元素访问)。其中的元素允许重复,可以无序。JDK没有提供直接实现Collection

             接口的实现类,它提供更具体的子接口List、Set。

                    所有实现Colection的类原则上都应该提供两个标准的构造函数:

                         1、无参构造函数用于创建一个空的容器,

                          2、有参构造函数用于创建一个新的Collection,且这个新的Collection和传入的collection

                    具有相同的元素。

        源代码解析    

package com.kiritor;
import java.util.Iterator;

/**
 * Collection接口源码分析
 * @author Kiritor*/
public interface Collection<E> extends Iterable<E> {
    /**返回当前集合中的元素个数*/
    int size();
    /**当集合为空的时候返回true*/
    boolean isEmpty();
    /**对于集合中的所有元素 e
     * (o==null ? e==null : o.equals(e)) */
    boolean contains(Object o);
    /**产生一个迭代器用户集合的遍历*/
    Iterator<E> iterator();
    /**返回元素组成的一个数组,这个数组
     * 一定是新生成的一个数组,集合并不对其引用进行维护
     * 换句话说,返回数组的修改并不反映在集合上*/
    Object[] toArray();
    /**同样是返回集合所有元素组成的数组
     * 不同的是返回的数组的类型是参数指定的数组类型
     * 因此,该方法可能会抛出
     * ArrayStoreException - 如果指定数组的运行时类型不是此 collection
     *                         每个元素运行时类型的超类型 
     *  NullPointerException - 如果指定的数组为 null
*/
    <T> T[] toArray(T[] a);
    /**插入元素
     * UnsupportedOperationException - 如果此 collection 不支持 add 操作 
       ClassCastException - 如果指定元素的类不允许它添加到此 collection 中 
       NullPointerException - 如果指定的元素为 null,并且此 collection 不允许 null 元素 
       IllegalArgumentException - 如果元素的某属性不允许它添加到此 collection 中 
       IllegalStateException - 如果由于插入限制,元素不能在此时间添加
*/
    boolean add(E e);
    /**删除元素0
     *也就是说对于集合中的元素满足(o==null ? e==null : o.equals(e)) 
     *则返回true。
     *ClassCastException - 如果指定元素的类型与此 collection 不兼容(可选) 
      NullPointerException - 如果指定的元素为 null,并且此 collection 不允许 null 元素(可选)。 
      UnsupportedOperationException - 如果此 collection 不支持 remove 操作
 */
    boolean remove(Object o);
    /**
     * 移除没有包含在c中的集合的元素*/
    boolean containsAll(Collection<?> c);
    boolean addAll(Collection<? extends E> c);
    boolean removeAll(Collection<?> c);
    boolean retainAll(Collection<?> c);
    void clear();
    boolean equals(Object o);
    /**产生hashCode*/
    int hashCode();
}
                以上代码是从JDK源码中拷贝出来的,正确性可保证! 

                     通过源码和其的异常抛出情况可以看出的是,Collection对于其操作是有一定的限制的

              例如 :UnsupportedOperationException,不支持操作异常。这种限制是通过其子接口的具体

              实现类来体现的。

                      接下来笔者一一探究。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值