集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历

集合体系结构

在这里插入图片描述
在这里插入图片描述
list系列集合:添加的元素式有序,可重复,有索引的

这里的有序式存取的格式式有序的,怎么存入怎么取出
set系列集合:添加的元素式无序,不重复,无索引
不重复:表示集合中不能存储重复的元素由此得出可以用这个去重
无索引:不能通过索引获得元素


在这里插入图片描述
Collection是一个接口

public static void main(String[] args) {
        //Collection是一个接口 接口不能直接创建对象
        //只能创建实现类对象  就是实现他的
        //ArrayList

        Collection<String>coll=new ArrayList<>();
        //添加元素

        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        System.out.println(coll);
        //[aaa, bbb, ccc]
        //细节1 list太你家元素的方法永远返回true 因为list允许重复
        //细节2 set添加元素 如果添加已存在的元素方法返回false因为set不允许重复



        //coll.clear();
        //System.out.println(coll);
        //[]打印结果
        //表示清空


        //3 删除
        coll.remove("aaa");
        System.out.println(coll);
        //[bbb, ccc] 返回值
        //因为Collection里面定义的是共性方法,所以不能通过索引删除,只能通过元素对象删除
        //方法有一个布尔值返回
        //如果删除失败表示删除的元素不存在


        //判断元素是否存在
        //contains方法底层是用的equals方法比较的 如果要比较自定义类对象 一定要再javabean类中重写equals方法.因为默认使用的是object的equals方法而他默认比较的是地址重写后才能比较对象属性
        boolean contains = coll.contains("aaa");

        System.out.println(contains);//返回值false因为aaa不存在


        boolean empty = coll.isEmpty();
        System.out.println(empty);//false
        
        int size = coll.size();
        System.out.println(size);//2
    }

Collection遍历方式

为什么要学遍历方式 因为 Collection下面的set方法不能用索引遍历但是list可以.

迭代器遍历

迭代器不依赖索引
在这里插入图片描述


    public static void main(String[] args) {

        //创建集合并添加元素

        Collection<String>coll=new ArrayList<>();

        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");

        //获取迭代器对象
        Iterator<String> it = coll.iterator();
        //迭代器好比一个指针 默认指向0索引元素


        //这个判断集合是否有元素
        while(it.hasNext()){
            String str = it.next();
            //这个是获取元素 并且移动指针到下一个元素
            System.out.println(str);
            //aaa
            //bbb
            //ccc
        }


    }

在这里插入图片描述
当迭代器已经指向最后一个元素如果再调用next获取元素的话就会报错NoSuchElementException

迭代器遍历完毕指针不会复位,如果再次调用hasNext就会返回false因为后面没有元素,如果要二次遍历需要重新获取一个迭代器对象

迭代器在遍历过程中的时候不能用集合方法添加和删除(equals)如果非要进行删除操作可以迭代器提供的remove方法.如果要增加暂时没有办法

总结

在这里插入图片描述

增强for遍历

在这里插入图片描述

    public static void main(String[] args) {


        Collection<String>coll=new ArrayList<>();

        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");

        //s是第三方变量 在循环的过程中依次白哦是集合中的每一个数据
        for(String s:coll){
            System.out.println(s);
            //aaa
            //bbb
            //ccc
        }






    }

增强for细节

在这里插入图片描述
由此证明他只是一个第三方存储变量

Lambda表达式遍历

在这里插入图片描述

  public static void main(String[] args) {

        Collection<String> coll=new ArrayList<>();

        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");

        //匿名内部类方法

        //forEach底层原理 他内部也相当于用了一个普通的for循环 把得到的每个元素传递给下面的accept方法
        //s表示集合中的每个元素
       /* coll.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
                //aaa
                //bbb
                //ccc
            }
        });*/

        //lambds方法
        coll.forEach(s-> System.out.println(s));
        //aaa
        //bbb
        //ccc
    }

总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值