什么是集合?
集合是用来存放某一类对象的容器。
集合主要分为两大系列:Collection和Map,Collection 表示一组对象,Map表示一组映射关系或键值对。
Collection的实现
以上是一个简单的类图,从图中可以看出Collection是众多集合类的根接口(当然它之上还有Iterable接口),在JDK中不提供这个接口的任何直接实现:而是提供了更具体的子接口(如 List、Queue和Set)的实现。
Collection中的方法
Collection接口中提供了集合操作的一些基本方法
int size(); 查询集合大小
boolean isEmpty(); 判断集合是否为空
boolean contains(Object o); 判断集合包含
boolean containsAll(Collection<?> c); 判断集合全包含
Iterator<E> iterator(); 迭代遍历(实现Iterable接口)
Object[] toArray(); 将集合转换为数组
boolean add(E e); 像集合中添加元素
boolean addAll(Collection<? extends E> c); 像一个集合中添加另一个集合的所有元素
boolean remove(Object o); 从集合中删除元素
default boolean removeIf(Predicate<? super E> filter); 如果存在则删除
removeIf方法解析
removeIf方法在Collection中有默认的实现方法,在其子类中又会有不同的实现方法,以下只对Collection接口中的removeIf做一个简单的解析
default boolean removeIf(Predicate<? super E> filter) {
// 判断入参非空
Objects.requireNonNull(filter);
// 给定一个标志位,用于返回结果,如果存在元素删除,则返回true,否则false
boolean removed = false;
// 利用Iterator迭代器进行迭代
// 这个地方其实也是面试的一个考点,在集合中删除元素究竟有什么坑?
final Iterator<E> each = iterator();
// 如果存在下一个元素则继续遍历
while (each.hasNext()) {
// 判断元素是否存在
if (filter.test(each.next())) {
// 如果存在则删除,将标志位置为true
each.remove();
removed = true;
}
}
return removed;
}
好了~ 以上就是对集合的顶层接口进行的一个简单解析,它的各个实现类会在后面的文章中和大家一起学习!!
让我们一起从零开始学Java,共同进步,欢迎大家批评指正。