概述
Collection表示容器,容器就是用来存放和管理其他类对象的地方,你可以把它理解为仓库管家,当你有东西需要存放和管理的时候,就要记得来找它。
Collection VS 数组
1 数组大小只能是固定的,不能从数组里动态添加和删除一个对象,要扩容的时候,就只能新建一个数组然后把原来的对象全部复制到新的数组里.
2 数组只能存放相同类型的对象
Collection结构图

Collection和Map是两个大的接口,Collection下有三个子接口,List,Queue,Set,下面是最常用的三个类,ArrayList,LinkedList,HashSet。Map接口下最常用的就要数HashMap了。正如你看到的那样,容器类里有很多不同的实现类,也就是不同的管家,他们有的不同的能力,各有所长也各有所短,至于他们的具体介绍,将会留到之后的几篇文章里介绍,本篇作为集合的介绍篇就不多做讲解了。
Collection接口定义
//返回集合的长度,如果长度大于Integer.MAX_VALUE,返回Integer.MAX_VALUE
int size();
//如果集合元素总数为0,返回true
boolean isEmpty();
//判断集合中是否包含指定的元素,其依据是equals()方法
boolean contains(Object o);
//如果集合包含指定集合中的所有元素,返回true
boolean containsAll(Collection<?> c);
//返回一个包含集合中所有元素的数组
Object[] toArray();
//与上个类似,只是增加了类型的转换
<T> T[] toArray(T[] a);
//向集合中加入一个元素,如果成功加入则返回true,如果加入失败,或者因集合本身已经包含同个元素而不再加入时,返回false
boolean add(E e);
//把指定集合中的所有元素添加到集合中,但在此期间,如果指定的集合发生了改变,可能出现意想不到的事情
boolean addAll(Collection<? extends E> c);
//从集合中删除指定元素的单个实例
boolean remove(Object o);
//从集合中删除所有包含在指定集合中的元素
boolean removeAll(Collection<?> c);
//清空集合
void clear();
//仅保留集合中包含在指定集合中的元素
boolean retainAll(Collection<?> c);
//将此方法抽象,是保证所有子类都覆写此方法,以保证equals的正确行为
boolean equals(Object o);
int hashCode();
//这个方法在JDK1.8中提供了默认的实现,会使用Iterator的形式删除符合条件的元素
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;
}
网友评论