Collection接口

我们今后会根据元素的是否重复,存储和取出的顺序等来决定我们该使用什么样的容器来进行存储
    根据我现实生活中经验来说,容器应该是丰富多彩的,多种多样的
    java应该要使用若干个不同的类来描述不同的容器,表示不同容器的特点。
    容器应该都有若杠共同的特点,都可以装东西等。
    那么java中提供的这些类中成员应该也会有相同的部分,那我们将其向上提取,由继承或实现来构建关系
    这样我们就可以得到一个继承体系。

    Collection【接口】:
        我们通过帮助文档发现,Collection是一个接口,不能直接new对象
        根据元素是否可以发生重复,继续分类
        - List【接口】元素可以发生重复,且有索引的概念
            ArrayList
        - Set【接口】元素不可以发生重复,没有索引

借助ArrayList子类对象来使用Collection接口中的方法

学习java中任意一个集合的步骤:
    1、创建相关集合对象
    2、创建元素对象
    3、将元素添加到集合中
    4、遍历集合

成员方法

Collection中的成员方法:
        boolean add(E e)
        boolean remove(Object o)
        void clear()
        boolean contains(Object o)
        boolean isEmpty()
        int size()
public class CollectionDemo1 {
    public static void main(String[] args) {
        //借助ArrayList创建对象来使用Collection接口中的方法
        // 1、创建相关集合对象
        Collection c1 = new ArrayList();

        //boolean add(Object e)
        c1.add(100); //这里涉及到自动装箱 int -> Integer
        c1.add(true);
        c1.add(12.34);
        c1.add(1000L);
        c1.add(100);
        c1.add(12.34);
        // 重写toString()方法的类是ArrayList类的父类的父类中重写的。
        // 底层是使用StringBuilder实现的
        System.out.println("c1: " + c1);
        //注意:我们今后使用集合的时候,规定一个集合只能存储一种数据类型的元素
        System.out.println("-----------------------------------------");
        //[100, true, 12.34, 1000, 100, 12.34]
        //boolean remove(Object o) 从集合中删除一个元素,只会删除最左边的一个匹配元素
        c1.remove(100);
        System.out.println("c1: " + c1);
        System.out.println("-----------------------------------------");
        //void clear() 清空集合元素
//        c1.clear();
//        System.out.println("c1: " + c1);
        System.out.println("-----------------------------------------");
        //boolean contains(Object o) 判断Collection集合中是否包含某个元素
        System.out.println(c1.contains(12.34));
        System.out.println("-----------------------------------------");
        //boolean isEmpty() 判断Collection集合是否为空
        System.out.println(c1.isEmpty());
        System.out.println("-----------------------------------------");
        //int size() 获取集合的长度【元素的个数】
        System.out.println(c1.size());
    }
}

方法

boolean addAll(Collection c)
    boolean removeAll(Collection c)
    boolean containsAll(Collection c)
    boolean retainAll(Collection c)

public class CollectionDemo2 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c1 = new ArrayList();
        c1.add("java");
        c1.add("maven");
        c1.add("clickhouse");
        c1.add("redis");

        Collection c2 = new ArrayList();
        c2.add("java");
        c2.add("hadoop");
        c2.add("maven");
        c2.add("hive");
        c2.add("hbase");
        c2.add("数据采集");

        System.out.println("c1: "+c1);
        System.out.println("c2: "+c2);

        System.out.println("------------------------------");
        //boolean addAll(Collection c)
//        c1.addAll(c2);
//        System.out.println("c1: "+c1);
//        System.out.println("c2: "+c2);

        //boolean removeAll(Collection c)
//        c1.removeAll(c2);
//        System.out.println("c1: "+c1);
//        System.out.println("c2: "+c2);

        //boolean containsAll(Collection c)
//        System.out.println(c1.containsAll(c2));
//        System.out.println("c1: "+c1);
//        System.out.println("c2: "+c2);

        //boolean retainAll(Collection c) 求交集 将结果保存在调用方法的对象集合中
        c1.retainAll(c2);
        System.out.println("c1: "+c1);
        System.out.println("c2: "+c2);

    }
}

遍历

如何遍历一个Collection集合
    1、Object[] toArray() 把集合转成数组,可以实现集合的遍历
    2、Iterator iterator() 迭代器,集合的专用遍历方式

转数组

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

public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("hello");
        c1.add("world");
        c1.add("java");
        c1.add("hadoop");
        c1.add("world");

        Object[] objects = c1.toArray();
        for(int i=0;i<objects.length;i++){
            Object obj = objects[i]; // "hello"
            String s = (String)obj;
            //向下转型,才可使用元素自己类型的方法
            System.out.println(s+"-"+s.length());
        }
    }
}

迭代器

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionDemo4 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("hello");
        c1.add("world");
        c1.add("java");
        c1.add("hadoop");
        c1.add("world");

        //Collection类型的集合本身是不可以直接遍历的
        //需要生成对应的迭代器,迭代器中存储了集合中的元素
        //将来遍历迭代器就可以获取集合中的元素了
        //生成迭代器
        Iterator iterator = c1.iterator(); // new Itr()
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next()); // NoSuchElementException
        //每一个迭代器,都有一个独立指针,每调用一次next()方法,就会向后移动一次指针取数据
        //如何判断下一个位置上是否有元素呢?
        while (iterator.hasNext()){
            Object obj = iterator.next();
            String s = (String)obj;
            System.out.println(s+"-"+s.length());
        }
    }
}

存储自定义对象

Collection集合存储自定义对象
    1、创建集合对象
    2、创建元素对象
    3、将元素添加到集合中
    4、遍历集合
public class CollectionDemo5 {
    public static void main(String[] args) {
        //1、创建集合对象
        Collection c1 = new ArrayList();

        //2、创建元素对象
        Student s1 = new Student("李刚", 15);
        Student s2 = new Student("江川", 11);
        Student s3 = new Student("钱志强", 17);
        Student s4 = new Student("祝帅", 15);

        // 3、将元素添加到集合中
        c1.add(s1);
        c1.add(s2);
        c1.add(s3);
        c1.add(s4);

        // 4、遍历集合
        //方式1:转数组遍历
//        Object[] objects = c1.toArray();
//        for(int i=0;i<objects.length;i++){
//            Object obj = objects[i];
//            Student s = (Student) obj;
//            System.out.println(s.getName()+"-"+s.getAge());
//        }

        //方式2:迭代器遍历
        Iterator iterator = c1.iterator();
        while (iterator.hasNext()){
            Object obj = iterator.next();
            Student s = (Student) obj;
            System.out.println(s.getName()+"-"+s.getAge());
        }
    }
}

posted @   rrrzzzrrr  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示