看源码第一天

java.util.Collection源码分析

public interface Collection extends Iterable

Java不提供接口Collection的直接实现类,在该接口中声明集合类最普遍的方法,常用来传递Collection;

包 (bag) 或多集合 (multiset)(可能包含重复元素的无序 collection)应该直接实现此接口。

实现该接口的实现类需要两个标准构造方法:无参构造器以创建空collection;带collection类型的单参数以创建具有相同元素的新collection;

public ArrayList() {
        this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
    }

public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        if ((size = elementData.length) != 0) {
            // c.toArray might (incorrectly) not return Object[] (see 6260652)
            if (elementData.getClass() != Object[].class)
                elementData = Arrays.copyOf(elementData, size, Object[].class);
        } else {
            // replace with empty array.
            this.elementData = EMPTY_ELEMENTDATA;
        }
    }

Collection是否时线程安全的由实现类自己决定。集合包含自己时递归遍历会出错;

		ArrayList<Collection> a = new ArrayList<>();
        a.add(a);
        while(a.get(0)!=null){
            System.out.println(a.getClass().getName());
            a = (ArrayList<Collection>) a.get(0);
        }

方法

int size();
返回集合中元素个数,若超过整型最大表示返回则返回Integer.MAX_VALUE 07fffffff

boolean isEmpty();
返回集合是否为空

boolean contains(Object o);
如果此 collection 包含指定的元素,则返回 true。更确切地讲,当且仅当此 collection 至少包含一个满足 (onull ? enull : o.equals(e)) 的元素 e 时,返回 true。

抛出:
ClassCastException - 如果指定元素的类型与此 collection 不兼容(可选)。
NullPointerException - 如果指定的元素为 null,并且此 collection 不允许 null 元素(可选)。

Iterator iterator();
返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提供保证顺序的类实例)。

Object[] toArray();
数组元素顺序和迭代器中顺序相同;容器中元素和数组中元素是同一份;

** T[] toArray(T[] a); **
浅拷贝,除非引用数据类型实现了Cloneable接口、实现clone方法;(实现序列化接口Serializable,将对象序列化再反序列化;)

boolean add(E e);
确保此 collection 包含指定的元素(可选操作)。如果 collection 由于某些原因(已经包含该元素的原因除外)拒绝添加特定的元素,那么它必须 抛出一个异常(而不是返回 false)。这确保了在此调用返回后,collection 总是包含指定的元素。

boolean remove(Object o)
移除指定元素(onull?enull:o.equals(e))成功返回true

boolean containsAll(Collection<?> c)
如果此 collection 包含指定 collection 中的所有元素,则返回 true。

boolean addAll(Collection<? extends E> c)
将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。

boolean removeAll(Collection<?> c)
移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。

boolean retainAll(Collection<?> c)
仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。求交集

void clear()
清空

boolean equals(Object o)

int hashCode()

#未完待续从Iterable接口继承的方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值