集合起源——Collection接口
集合层次结构中的根接口。集合表示一组对象,称为其元素。
实现了什么接口?
Iterable接口,该接口指明实现类有迭代器功能,迭代器包含四个方法
1、next()
让迭代器跳过一个元素
2、hasNext()
判断迭代器后边还有没有元素
3、remove()
删除迭代器跳过的元素,没有跳过元素时调用会抛出IllegalStateException
4、forEachRemaining(Consumer<? super E> action (jdk1.8)
本质是 while(iterator.hasNext()){iterator.next()} 操作,参数里使用lambda表达式对元素进行操作
该接口实现的方法
1、Iterator iterator();
返回指向集合头元素之前的迭代器,不保证返回元素的顺序,顺序访问取决于集合结构是否保证元素的存储顺序
2、spliterator() (1.8)
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
包含了什么方法?
1、int size()
返回集合内元素的数量
2、boolean isEmpty()
判断集合内是否含有元素
3、boolean contains(Object o);
判断集合内是否至少包含一个元素o,元素是否为o的判断方法为如果o为null使用==判断,如果o不为null,使用equals()判断。
建议实现类可能抛出的异常:
ClasscastException 元素o和集合内的元素类型不一致
NullpointerException元素o为null但集合不支持存储null
4、Object[] toArray();
返回一个Object数组,数组元素为集合内的元素
5、 T[] toArray(T[] a);
将集合内的元素填充到数组a,如果数组a的大小比集合内元素个数多,则以null填充数组a多余的元素,返回的数组和数组a为同一个数组,如果数组a的大小比集合内元素个数少,则以null填充数组a,返回一个新数组,新数组包含集合内所有的元素。
建议实现类可能抛出的异常:
ArrayStoreException 填充的数组类型不是集合存储元素的类型或者其父类
NullPointerException 填充的数组为null
6、boolean add(E e);
向集合中添加元素e,返回是否添加成功,除了因为集合内已经包含此元素而返回false,其他原因必须抛出异常。
建议实现类可能抛出的异常:
UnsupportedOperationException 集合不支持add操作
ClassCastException
NullPointerException 元素e为null且集合不支持存储null
IllegalArgumentException
IllegalStateException
7、boolean remove(Object o);
从集合中删除单个元素o,返回是否删除成功,元素是否为o的判断方法为如果o为null使用==判断,如果o不为null,使用equals()判断。
建议实现类可能抛出的异常:
ClassCastException
NullPointerException 当o为null且集合不允许存储null
UnsupportedOperationException 集合不支持remove操作
8、boolean containsAll(Collection<?> c);
如果本集合包含集合c的所有元素则返回true,否则返回false
建议实现类可能抛出的异常:
ClassCastException
NullPointerException 当c内的元素有一个或多个为null且集合不允许存储null
9、boolean addAll(Collection<? extends E> c);
向本集合中添加集合c中的所有元素,返回是否添加成功
建议实现类可能抛出的异常:
UnsupportedOperationException 集合不支持此操作
ClassCastException
NullPointerException 当c内的元素有一个或多个为null且集合不允许存储null
IllegalArgumentException
IllegalStateException
10、boolean removeAll(Collection<?> c);
删除本集合中包含的所有c集合中的元素,返回是否删除成功
建议实现类可能抛出的异常:
UnsupportedOperationException 集合不支持此操作
ClassCastException
NullPointerException 当c内的元素有一个或多个为null且集合不允许存储null
11、removeIf (1.8)
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
删除此集合中满足给定谓词的所有元素。在迭代期间抛出的错误或运行时异常或谓词被传递给调用者。
默认实现使用其iterator遍历集合的所有元素。使用remove()删除每个匹配元素。
如果集合的迭代器不支持删除,则会在第一个匹配元素上抛出UnsupportedOperationException。
可能抛出的异常:
NullPointerException filter为空
UnsupportedOperationException 集合不支持remove
12、boolean retainAll(Collection<?> c);
从此集合中删除不包含在指定集合中的所有元素。如果对集合进行了操作则返回true
建议实现类可能抛出的异常:
ClassCastException
NullPointerException 如果自身集合内有null但是集合c不允许存放null会抛出
13、void clear();
从此集合中删除所有元素
建议实现类可能抛出的异常:
UnsupportedOperationException 集合不支持clear操作
14、stream() (1.8)
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
15、parallelStream() (1.8)
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
关于stream和spliterator之后再填充吧~