JAVA集合系列(2):接口 Collection

前言

首先,我们对Collection进行说明。下面先看看下JDK文档中对于Collection集合的一些说明:

public interface Collection<E> extends Iterable<E>

集合层次结构中的根界面 。
集合表示一组被称为其元素的对象。一些集合允许重复元素,而其他集合不允许。有些被命令和其他无序。

JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set和List。
该界面通常用于传递集合,并在需要最大的通用性的情况下对其进行操作。 
包或多重集(可能包含重复元素的无序集合)应直接实现此接口。

所有通用的Collection实现类,应提供两个"标准"构造函数:

  • 一个void(无参数)构造函数,它创建一个空集合,
  • 一个构造函数, Collection ,它创建一个与其参数相同的元素的新集合。 

实际上,后一个构造函数允许用户复制任何集合,生成所需实现类型的等效集合。 没有办法强制执行此约定(因为接口不能包含构造函数),而是所有Java平台库中的通用Collection实现。

实现要求:

  • 默认方法实现(继承或其他)不应用任何同步协议。 如果Collection实现具有特定的同步协议,那么它必须覆盖默认实现以应用该协议。

1、方法摘要

OK,我们来看一下Collection接口的一些方法摘要。

Collection接口中的方法

返回值类型

方法

描述

boolean add(E e) 确保此集合包含指定的元素(可选操作)。 
boolean addAll(Collection<? extends E> c)  将指定集合中的所有元素添加到此集合(可选操作)。
void clear()  从此集合中删除所有元素(可选操作)。  
boolean contains(Object o) 如果此集合包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c) 如果此集合包含指定 集合中的所有元素,则返回true。
boolean equals(Object o) 将指定的对象与此集合进行比较以获得相等性。
int hashCode() 返回此集合的哈希码值。
boolean isEmpty() 如果此集合不包含元素,则返回 true 。
Iterator<E> iterator() 返回此集合中的元素的迭代器。
default Stream<E> parallelStream()  返回可能并行的 Stream与此集合作为其来源。  
boolean remove(Object o) 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 
boolean removeAll(Collection<?> c) 删除指定集合中包含的所有此集合的元素(可选操作)。  
default boolean removeIf(Predicate<? super E> filter) 删除满足给定谓词的此集合的所有元素。  
boolean retainAll(Collection<?> c) 仅保留此集合中包含在指定集合中的元素(可选操作)。 
int size() 返回此集合中的元素数。
default Spliterator<E> spliterator() 创建一个Spliterator在这个集合中的元素。  
default Stream<E> stream() 返回以此集合作为源的顺序 Stream 。  
Object[] toArray() 返回一个包含此集合中所有元素的数组。  
<T> T[] toArray(T[] a)  返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。  
扫描二维码关注公众号,回复: 10134856 查看本文章

2、方法详细信息

接下来,通过几个demo测试类来了解下Collection中的这些方法详细信息。

【1】int size();

作用描述:返回此集合中的元素数。如果此collection包含超过Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE 。 

返回结果:此集合中的元素数 

测试程序:

@Test
public void test_size(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    collection.add("d");
    int size = collection.size();
    System.out.println("集合中元素的个数:" + size);
}

测试结果:

集合中元素的个数:4

【2】 boolean isEmpty();

作用描述:判断集合是否为空,如果为空,则返回 true;反之,则返回false。

返回结果:true/false

测试程序:

@Test
public void test_isEmpty(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    boolean isEmpty = collection.isEmpty();
    System.out.println("集合是否为空:" + isEmpty);
}

测试结果:

集合是否为空:false

【3】 boolean contains(Object o);

作用描述:判断集合是否包含指定元素,如果包含,则返回 true;反之,则返回false。

返回结果:true/false

测试程序:

@Test
public void test_isEmpty(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    boolean isContains = collection.contains("a");
    System.out.println("集合是否包含元素a:" + isContains);
}

测试结果:

集合是否包含元素a:true

【4】 Iteratble<E> iterator();

作用描述:返回此集合中的元素的迭代器。 没有关于元素返回顺序的保证(除非这个集合是提供保证的某个类的实例)。 

返回结果:一个 Iterator在这个集合中的元素 。

测试程序:

@Test
public void test_iterator() {
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");

    Iterator<String> iterator = collection.iterator();
    while (iterator.hasNext()) {
        String next = iterator.next();
        System.out.println("迭代器遍历出来的集合元素:" + next);
    }
}

测试结果:

迭代器遍历出来的集合元素:a
迭代器遍历出来的集合元素:b
迭代器遍历出来的集合元素:c

【5】 Object[] toArray();

作用描述:返回一个包含此集合中所有元素的数组。如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。 返回的数组将是“安全的”,因为该集合不保留对它的引用。(换句话说,这个方法必须分配一个新的数组,即使这个集合是由数组支持的)。因此,调用者可以自由地修改返回的数组。此方法充当基于阵列和基于集合的API之间的桥梁。 

返回结果:一个包含此集合中所有元素的数组

测试程序:

@Test
public void test_toArray() {
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    System.out.println("集合元素:" + collection);

    Object[] objects = collection.toArray();
    for (int i = 0; i<objects.length;i++){
        System.out.println("数组元素:" + objects[i].toString());
    }
}

测试结果:

集合元素:[a, b, c]
数组元素:a
数组元素:b
数组元素:c

【6】 1-boolean remove();   2-void clear();

作用描述:1-移除集合中的元素;2-清空集合 

返回结果:1-true/false;2-void;

测试程序:

@Test
public void test_removeAndClear(){
    Collection<String> collection = new ArrayList<>();
    collection.add("a");
    collection.add("b");
    collection.add("c");
    System.out.println("集合元素:" + collection);

    boolean remove = collection.remove("c");
    System.out.println("移除元素a后的新集合:" + collection);

    collection.clear();
    System.out.println("清空后的集合:" + collection);
}

测试结果:

集合元素:[a, b, c]
移除元素a后的新集合:[a, b]
清空集合:[]

愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

发布了93 篇原创文章 · 获赞 136 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_27706119/article/details/104785519