首页 > 代码库 > java.util包详解(二)——Connection接口
java.util包详解(二)——Connection接口
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();
java.util包详解(二)——Connection接口