Collection集合

集合概述

  集合是用来存储引用类型数据的容器,不能存储基本类型数据。集合只能保存对象。

对比:数组是用来存储同种类型数据的容器,数组元素既可以是基本类型,也可以是引用类型数据;

   定义了数组后存储元素的个数就确定了,而集合中存储元素的数量是可以变化的。

集合分为两大类:

  Collection集合,其特点是单个存储元素;

  Map集合,特点是按 <键,值> 对的形式存储,如存储 <学生姓名,成绩>

-----------------------------------------------------------

Collection集合

Collection集合用于存储单个的数据,主要有两个接口 List 与 Set。

  List集合存储有序可重复的数据;List集合 - 鹿先森JIAN - 博客园 (cnblogs.com)

  Set集合存储无序不可重复的数据;Set集合 - 鹿先森JIAN - 博客园 (cnblogs.com)

-----------------------------------------------------

集合的基本操作包括:添加、删除元素,判断是否包含指定的元素,遍历集合中的元素。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class Collection_api_Test {
    public static void main(String[] args) {
        /*  接口 = 实现对象
        多态: 编译看左边,运行看右边
        方法是否能够通过编译,看多态左边类中是否有对应的方法
        执行方法,实际执行的是右边类中重写的方法    */

        // Collection接口 变量 = new 实现类对象();
        Collection<String> book = new ArrayList<>();
        book.add("小灰的漫画算法");
        book.add("算法第四版");

        Collection<String> collection = new ArrayList<>();
        collection.add("Java从入门到精通");
        collection.add("Java从入门到精通");
        collection.add("计算机网络");
        // addAll(Collection<? extends E> c) 将c集合中的所有元素都添加到当前集合中
        collection.addAll(book);

        // 打印,默认调用了 toArray()方法
        System.out.println(collection); // [Java从入门到精通, Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版]

        // contains(Object o) 判断是否包含指定的元素,则返回 true
        boolean flag1 = collection.contains("计算机网络");
        System.out.println(flag1); // true
        boolean flag2 = collection.contains("深入了解Java虚拟机");
        System.out.println(flag2);  // false

        // remove(Object o) 移除指定元素,如果存在多个,只删第一个
        System.out.println("移除前:" + collection);  // 移除前:[Java从入门到精通, Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版]
        collection.remove("Java从入门到精通");
        System.out.println("移除后:" + collection);  // 移除后:[Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版]

        // 返回此 collection 中的元素数量 size()
        System.out.println("元素个数:" + collection.size());    // 元素个数:4
/*
        // 判空 isEmpty()
        System.out.println(collection.isEmpty());
        // 清空 clear()
        collection.clear();
        System.out.println(collection.isEmpty());
*/
        // Object[] toArray() 方法
        Object[] objects = collection.toArray();
        //System.out.println(objects.length);     // 数组长度
        // 遍历数组
        for (int i = 0; i < objects.length; i++) {
            System.out.println(objects[i]);
        }
        // <T> T[] toArray(T[] a) 方法
        // 注意:空数组的长度 >= 集合元素个数,否则shuzu仍然为空
        String[] shuzu = new String[5]; // 先初始化一个空数组
        System.out.println(Arrays.toString(shuzu));  // [null, null, null, null, null]
        // 把集合转换为数组
        String[] array = collection.toArray(shuzu); 
        // 打印数组
        System.out.println(Arrays.toString(shuzu)); // [Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版, null]
        // 打印集合
        System.out.println(Arrays.toString(array)); // [Java从入门到精通, 计算机网络, 小灰的漫画算法, 算法第四版, null]
        // 判断是否相等
        System.out.println(shuzu == array); // true
    }
} 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
Collection接口对于单列集合提供的一种通用的遍历方式
这种遍历方式,适用于所有的单列集合,不考虑是否有索引

Iterator<E> iterator()方法可以返回集合的迭代器.
迭代器有一个游标, 刚刚获得迭代器时游标指向第一个元素的前面,
调用迭代器的 hasNext()方法,判断游标后面是否还有元素;
调用 next()方法返回游标后面的元素, 然后游标下移;
 */
public class Collection_Iterator_Test {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();
        collection.add("Java");
        collection.add("Java");
        collection.add("计算机网络");
        //1.获取一个迭代器对象,迭代器对象中包含了该集合的所有元素内容
        Iterator<String> iterator = collection.iterator();

        // boolean hasNext() 如果仍有元素可以迭代,则返回 true
        // E next() 返回迭代的下一个元素

        //遍历输出
        while (iterator.hasNext()){
           System.out.println(iterator.next());
        }
        //遍历删除所有重复元素
        while (iterator.hasNext()){
            String s = iterator.next();  //返回下个元素
            if ( "Java".equals(s) ){
                iterator.remove();  //迭代删除
            }
        }
    }
}

 

posted @ 2022-04-16 21:43  鹿先森JIAN  阅读(46)  评论(0编辑  收藏  举报