java.util包详解(二)--Connection接口

2017-05-06 02:40

Connection接口介绍

  Connection接口是java集合的root接口,没有实现类,只有子接口和实现子接口的各种容器。主要用来表示java集合这一大的抽象概念。

  Connection接口要求,所有实现此接口的容器,必须提供至少两种构造方法:无参构造方法、参数为Connection类的构造方法。后者需要创建一个具有和参数包含元素相同的新集合,以此来进行集合的复制。java中所有的api均遵守了此规则。

  如果集合不支持某种修改方式,那么进行这种修改操作的方法必须抛出UnsupportedOperationException异常。但是,如果这次修改并没有实际效果(比如往一个集合里新增一个空集合),集合可能不会抛出此异常。

  对于某些集合,他们对自己能容纳的元素有限制,尝试进行添加操作时可能会抛出unchecked Exception,如NullPointerException或者ClassCastException。而在查询时,集合可能会抛出异常,也可能直接返回一个false表示失败,这取决于集合自身的实现。

  对于集合中元素的比较,集合可能使用equals方法,也有可能使用hashCode方法,这取决于集合的实现。不能简单的认为集合一定会调用equals方法,集合可能会使用任意一种Object提供的合适方法进行元素的比较。

  另外,当集合包含的元素中有自身时,调用集合的clone()、hashCode()、equals()、toString()方法可能会失败并抛出异常,因为这导致了递归调用。集合可以自己处理这种异常,但是目前实现的集合都没有进行处理。

Connection包含的方法

/**
*  判断类方法
**/
int size();//返回集合包含的元素,若大于Integer.MAX_VALUE,返回Integer.MAX_VALUE
boolean isEmpty();//集合为空时返回true
boolean contains(Object o);//集合包含o时返回true,可能会抛出ClassCastException和NullPointerException异常
boolean containsAll(Collection<?> c);
/**
* 转化类方法
**/
Iterator<E> iterator();//返回集合对应的迭代器(这是由于Connection继承了Iterable接口)
Object[] toArray();//将集合转化为数组
<T> T[] toArray(T[] a);//将集合转化为数组,并保持输入的类型
/**
* 操作类方法
**/
boolean add(E e);
boolean addAll(Collection<? extends E> c);
boolean remove(Object o);
boolean removeAll(Collection<?> c);
boolean removeIf(Predicate<? super E> filter);//此方法有默认实现
boolean retainAll(Collection<?> c);//仅保留参数中的元素
void clear();