Java集合(一)

本文深入解析Java集合框架中的Collection接口,涵盖常用方法如添加、删除、查找等,并重点讲解Iterator遍历与增强for循环的实现原理。通过实例演示,探讨了如何利用迭代器进行元素操作以及小技巧,适合初学者和进阶者参考。
摘要由CSDN通过智能技术生成

Java集合(一)


前言

1、集合主要分两组(单例集合,双列集合)
2、Collection接口有俩个重要的子接口 List Set ,他们的实现子类都是单例集合(都是存放的单个元素)
3、Map接口的实现子类 HashMap、TreeMap、Hashtable、LinkedHashMap,他们都是双例集合(都是存放的 K V 值)
4、看下面类图


提示:以下是本篇文章正文内容,下面案例可供参考

一、类图

1、Collection

在这里插入图片描述

2、Map

3、单例集合--------双例集合

在这里插入图片描述

二、Collection接口和常用方法

2.1常用方法

public class CollectionMethod {
    public static void main(String[] args) {
        //Collection接口和常用方法
        List list = new ArrayList();

        //1、add:添加单个元素(只要是Object子类对象都可以接收)
        list.add("wxd");
        list.add(23);//list.add(new Integer(10))
        list.add(true);
        System.out.println("1、add:添加单个元素(只要是Object子类对象都可以接收)-------list = " + list);
        System.out.println();

        //2、remove:删除指定元素
        list.remove(0);//删除第一个元素
        list.remove(new Integer(23));//指定删除某个元素  因为里面存的是对象,所以需要传参 new Integer(23)来删除list 里的23
        System.out.println("2、remove:删除指定元素(删除了索引为零(也就是第一位的wxd)、删除了23)-------list = " + list);
        System.out.println();

        //3、contains:查找元素是否存在  存在返回
        System.out.println("3、contains:查找元素是否存在(查找参数为:wxd)---存在返回true 反之为false------" + list.contains("wxd"));
        System.out.println();

        //4、size:获取元素个数
        System.out.println("4、size:获取list元素个数-----" + list.size());
        System.out.println();

        //5、isEmpty:判断是否为空
        System.out.println("5、isEmpty:判断是否为空---是为true 否 false------" + list.isEmpty());
        System.out.println();

        //6、clear:清空
        list.clear();
        System.out.println("6、clear:清空-------list:" + list);
        System.out.println("isEmpty:清空之后、判断list是否为空---是为true 否 false------" + list.isEmpty());
        System.out.println();

        //7、addAll:添加多个元素
        ArrayList list2 = new ArrayList<>();
        list2.add("奥特曼");
        list2.add("铁甲小宝");
        list2.add("铠甲勇士");
        list.addAll(list2);
        System.out.println("7、addAll:添加多个元素(list2【奥特曼,铁甲小宝,铠甲勇士】)------list:" + list);
        System.out.println();

        //8、containsAll:查找多个元素是否都存在
        System.out.println("8、containsAll:查找多个元素(list2【奥特曼,铁甲小宝,铠甲勇士】)是否都存在-----" + list.containsAll(list2));
        System.out.println();

        //9、removeAll:删除多个元素
        list.add("小鲤鱼历险记");
        System.out.println("list=" + list);
        System.out.println("list2=" + list2);
        list.removeAll(list2);
        System.out.println("9、removeAll:删除多个元素(list2【奥特曼,铁甲小宝,铠甲勇士】)-------list=" + list);
    }
}

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

2.2、Collection接口遍历元素方式—使用Iterator(迭代器)

在这里插入图片描述
在这里插入图片描述

这里我们看到Collection接口还继承了Iterable接口 看下Iterable源码👇
在这里插入图片描述
只要是实现了Collection接口的子类都可以获取到一个迭代器。
主要遍历Collection集合中的元素。
Iterator仅用于遍历集合,本身并不存放数据。

2.2.1、 执行原理

public class CollectionIterator {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("wxd");
        list.add(23);
        list.add("180cm");
        list.add("80kg");

        //迭代器运行原理
        Iterator iterator = list.iterator();//得到一个集合的迭代器
        //hasNext()判断是否还有下一个元素 有返回true while继续执行  无返回false while不执行
        while (iterator.hasNext()){
            //next()  指针下移   将下移以后集合位置上的元素返回
            System.out.println(iterator.next());
        }
    }
}

在这里插入图片描述

2.2.2、 iterator.hasNext()和iterator.next()源码解释

2.2.2.1、iterator.hasNext()

在这里插入图片描述

2.2.2.2、iterator.next()

在这里插入图片描述

2.2.3、提示

在调用iterator.next()方法之前必须要调用iterator.hasNext()进行检测,若不调用,且下一条记录无效,直接调用iterator.next()会抛出NoSuchElementException异常
在这里插入图片描述
如果需要再次遍历需要重置迭代器
在这里插入图片描述

2.3、Collection接口遍历元素方式—for循环增强

增强for循环可以代替iterator迭代器。
特点:增强for循环就是简化班的iterator
本质一样,只能用于遍历集合和数组

2.3.1演示

public class CollectionFor {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add(new Book1("三国演绎", "罗贯中", 10.0));
        collection.add(new Book1("小李飞刀", "古龙", 5.1));
        collection.add(new Book1("红楼们", "曹雪清", 34.6));

        System.out.println("collection=" + collection);

        //语法
        //  for(元素类型  元素名  :  集合名或数组名){
        //      访问元素
        //  }
        //使用增强for循环
        for (Object book : collection) {
            System.out.println("book=" + book);
        }

        //增强for循环  也可以直接在数组使用
        int[] nums = {1, 8, 6, 9, 752, 3, 8, 24, 78, 24, 85};
        System.out.println("增强for循环也可以在数组使用--");
        for (int i : nums) {
            System.out.println("i=" + i);
        }
    }
}

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

2.3.2、增强for循环底层仍然是iterator迭代器

可以理解为增强for就是简化版本的迭代器遍历
👇在for循环处debug,看源码
在这里插入图片描述
首先,调用了iterator,返回 一个新的对象👇
在这里插入图片描述
跳出那个方法,再进去👇调用了hasNext()方法 判断是否有下一个元素
在这里插入图片描述
接着跳出,再进去👇调用了next()方法 获取游标对应的数据
在这里插入图片描述
执行一次next()方法,游标往下移动一次
在这里插入图片描述

2.3.3、小彩蛋

2.3.3.1、idea while 快捷键 itit 👇

在这里插入图片描述
在这里插入图片描述

2.3.3.1、增强for循环 快捷键 I👇

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎不吃生菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值