一、Collection介绍

Java集合体系架构分为Collection和Map两大集合框架,其中Collection是单列集合的顶级接口,它具有单列存储的特点,即一次只能添加一个元素;而Map则是双列集合的接口。Collection作为顶级接口,它最主要的三个子接口分别是List,Set和Queue。同时,作为顶级接口它抽取了所有实现类的共有方法。

请添加图片描述

接下来我们将结合代码来具体学习Collection相关知识。

二、Collection的常用方法 Collection应知应会

Collection作为顶级集合接口,它最常见的实现类是ArrayList,LinkedList,HashSet和TreeSet,作为顶级接口它抽取了所有实现类的共有方法,所有实现Collection接口的实现类均可使用这些方法。例如ArrayList,LinkedList,HashSet和TreeSet均可使用如下共有方法。

方法名说明
boolean add(E e)增添数据
boolean remove(Object o)从集合中移除指定的元素
void clear()清空集合中的元素
boolean contains(Object o)判断集合中是否存在指定的元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数

2.1 调用add()方法增添数据

具体实现类为ArrayList的Collection

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //普通输出
        System.out.println(collection);
    }

运行结果:
在这里插入图片描述


具体实现类为LinkedList的Collection

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为LinkedList
        Collection<String> collection=new LinkedList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //普通输出
        System.out.println(collection);
    }

运行结果:
在这里插入图片描述


具体实现类为HashSet的Collection

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为HashSet
        Collection<String> collection=new HashSet<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //普通输出
        System.out.println(collection);
    }

运行结果:
在这里插入图片描述


具体实现类为TreeSet的Collection

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为TreeSet
        Collection<String> collection=new TreeSet<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //普通输出
        System.out.println(collection);
    }

运行结果:
在这里插入图片描述


2.2 调用remove()方法删除指定数据

接下来我们以具体实现类为ArrayList的Collection来举例

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        collection.add("lisi");
        //调用remove()方法删除指定数据
        collection.remove("lisi");
        //普通输出
        System.out.println(collection);
    }

运行结果:(从运行结果中我们看到调用remove()方法只能删除第一个值为lisi的对象,并且当删除lisi之后,后面三个元素wangwu,zhaoliu和lisi位置会左移,这为我们未来删除数据时注意索引的位置,防止漏删
在这里插入图片描述


2.3 调用clear()方法清空数据

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //调用clear()方法清空数据
        collection.clear();
        //普通输出
        System.out.println(collection);
    }

运行结果:
在这里插入图片描述


2.4 调用contains()方法判断集合中是否存在指定的元素

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //调用contains()方法判断集合中是否存在指定的元素
        boolean zhangsan = collection.contains("zhangsan");
        System.out.println("集合中存在zhangsan此元素吗?"+zhangsan);

        boolean aoao = collection.contains("aoao");
        System.out.println("集合中存在aoao此元素吗?"+aoao);
    }

运行结果:
在这里插入图片描述


2.5 调用isEmpty()方法判断集合是否为空

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //调用isEmpty()方法判断集合是否为空
        boolean empty = collection.isEmpty();
        System.out.println("此集合为空吗?"+empty);

        //调用clear()方法清空集合元素
        collection.clear();

        //调用isEmpty()方法判断集合是否为空
        boolean empty1 = collection.isEmpty();
        System.out.println("此集合为空吗?"+empty1);
    }

运行结果:
在这里插入图片描述


2.6 调用size()方法获取集合的长度

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //调用size()方法获取集合的长度
        int size = collection.size();
        System.out.println("集合的长度为:"+size);
        //调用clear()方法清空集合元素
        collection.clear();

        //调用size()方法获取集合的长度
        int size1 = collection.size();
        System.out.println("集合的长度为:"+size1);
    }

运行结果:
在这里插入图片描述


三、Collection的遍历

由于共有方法中并没有带索引的方法,因此Collection无法使用普通for循环来遍历集合,只能使用普通输出方法,Iterator迭代器遍历和forEach语句遍历集合数据。

3.1 普通输出方法输出Collection集合

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //普通输出方法输出Collection集合
        System.out.println(collection);
    }

运行结果:
在这里插入图片描述


3.2 forEach语句输出Collection集合

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //forEach语句输出Collection集合,Collection对象的数据类型为String,s相当于collection
        for (String s : collection) {
            System.out.println(s);
        }
    }

运行结果:
在这里插入图片描述


3.3 Iterator迭代器输出Collection集合

public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("zhaoliu");
        //Iterator迭代器输出Collection集合
        //由于Collection的数据类型为String,因此Iterator的数据类型也为String
        Iterator<String> iterator=collection.iterator();
        //iterator.hasNext()的作用是判断当前位置是否存在元素,若存在元素则为true,否则为false
        while(iterator.hasNext()){
            //iterator.next()的作用是获取当前位置元素,之后指向下一个位置
            System.out.println(iterator.next());
        }
    }

运行结果:
在这里插入图片描述


3.3.1 Iterator迭代器删除Collection集合指定元素
public static void main(String[] args) {
        //创建一个Collection对象,并规定其数据类型为String,指明其实现类为ArrayList
        Collection<String> collection=new ArrayList<>();
        //调用add()方法增添数据
        collection.add("zhangsan");
        collection.add("lisi");
        collection.add("wangwu");
        collection.add("wangwu");
        collection.add("zhaoliu");
        collection.add("wangwu");
        //Iterator迭代器输出Collection集合
        //由于Collection的数据类型为String,因此Iterator的数据类型也为String
        Iterator<String> iterator=collection.iterator();
        //iterator.hasNext()的作用是判断当前位置是否存在元素,若存在元素则为true,否则为false
        while(iterator.hasNext()){
            //iterator.next()的作用是获取当前位置元素,之后指向下一个位置
            if(iterator.next().equals("wangwu")){
                //删除当前元素
                iterator.remove();
            }
        }
        //forEach语句输出Collection集合
        for (String s : collection) {
            System.out.println(s);
        }
    }

运行结果:
在这里插入图片描述


OK!!!Collection介绍完毕!!!

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐