Java集合之Collection

74 阅读1分钟

什么是集合?

集合是用来存放某一类对象的容器。

集合主要分为两大系列: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,共同进步,欢迎大家批评指正。