Collection 接口及其常用方法
Collection 接口的特点
Collection接口没有直接实现类,提供了更具体的子接口(如Set和List)的实现。Collection实现类(通常通过其中一个子接口间接实现Collection)可以存放多个 Object 类型的元素。有些Collection接口的实现类可以存放重复的元素(List),有些则不可以(Set)。有些Collection接口的实现类是有序的(List),有些是无序的(Set)。
所有通用的Collection实现类都会提供两个"标准"构造方法:一个无参构造方法,来创建一个空的集合;以及一个带有单个Collection类型参数的构造方法,创建一个与参数集合具有相同元素的新集合。实际上,后一种构造方法可以复制任何集合,生成一个与参数集合元素相同的所需类型的集合。- public class CollectionConstructors() {
- public static void main(String[] args) {
- ArrayList list = new ArrayList();
- System.out.println("list = " + list); // list = []
-
- list.add(1);
- list.add(2);
- list.add(3);
- System.out.println("list = " + list); // list = [1, 2, 3]
- Vector<Object> vector = new Vector<>(list);
- System.out.println("vector = " + vector); // vector = [1, 2, 3]
- }
- }
复制代码 Collection 接口常用方法
下面的代码以其间接实现类ArrayList演示Collection接口的常用方法。- public class CollectionMethod() {
- public static void main(String[] args) {
- Collection collection = new ArrayList<>();
-
- // boolean add(E e)
- // 给集合中添加指定的元素,添加成功则返回 true。如果此集合不允许重复元素并且已经包含了指定的元素,
- // 则返回 false。支持此操作的实现类可能会对添加到该集合中的元素进行限制。如果一个集合拒绝添加某个
- // 特定元素的原因不是因为集合已经包含该元素,会抛出一个异常(而不是返回 false)。
- collection.add("hello");
- collection.add(10);
- collection.add(true);
- System.out.println("collection = " + collection); // collection = [hello, 10, true]
-
- // boolean remove(Object o)
- // 从集合中移除指定元素的一个实例。如果集合包含多个满足 (o==null ? e==null : o.equals(e))条件的元素 e,
- // 则移除第一个元素 e。移除完成后返回 true。
- collection.remove("hello");
- System.out.println("collection = " + collection); // collection = [10, true]
-
- // boolean contains(Object o)
- // 如果此集合包含指定元素,则返回 true。更准确地说,当且仅当此集合包含至少
- // 一个满足(o==null ? e==null : o.equals(e))条件的元素 e 时,返回 true。
- System.out.println(collection.contains(10));// true
-
- // int size()
- // 返回此集合中的元素数量
- System.out.println(collection.size());// 2
-
- // boolean isEmpty()
- // 判断集合是否为空
- System.out.println(collection.isEmpty());// false
-
- // void clear()
- // 清空集合中的元素
- collection.clear();
- System.out.println("collection = " + collection); // collection = []
-
- // boolean addAll(Collection<? extends E> c)
- // 将指定集合中的所有元素添加到此集合中
- Collection collection1 = new ArrayList();
- collection1.add("Mary");
- collection1.add("Luck");
- collection.addAll(collection1);
- System.out.println("collection = " + collection); // collection = [Mary, Luck]
-
- // boolean containsAll(Collection<?> c)
- // 判断此集合是否包含指定集合中的所有元素
- System.out.println(collection.containsAll(collection1));// true
- // boolean removeAll(Collection<?> c)
- // 从此集合中移除与指定集合中相同的所有元素。在此调用返回后,此集合将不包含与指定集合共有的任何元素。
- collection.add("King");
- collection.removeAll(collection1);
- System.out.println("collection = " + collection); // collection = [King]
- }
- }
复制代码 Collection 接口遍历元素方式
使用 Iterator(迭代器)
Iterator接口是集合的迭代器,主要用于遍历Collection集合中的元素。所有实现了Collection接口的实现类,都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器。
Iterator接口的方法:
[code]// 判断是否还有下一个元素boolean hasNext() // 返回集合中的下一个元素E next()// 从底层集合中移除此迭代器返回的最后一个元素。每次调用 next() 只能调用此方法一次。// 如果在调用此方法之前尚未调用过 next() 方法,或者在最后一次调用 next() 方法之后// 已经调用了过一次 remove() 方法,则抛出 IllegalStateException 异常。default void remove() // 对剩余的每个元素执行给定的操作,直到所有元素被处理完或操作抛出异常为止。default void forEachRemaining(Consumer |