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

目录

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

集合体系结构

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第1张图片
集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第2张图片
list系列集合:添加的元素式有序,可重复,有索引的

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


集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第3张图片
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可以.

迭代器遍历

迭代器不依赖索引
集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第4张图片


    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
        }


    }

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第5张图片
当迭代器已经指向最后一个元素如果再调用next获取元素的话就会报错NoSuchElementException

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

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

总结

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第6张图片

增强for遍历

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第7张图片

    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细节

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第8张图片
由此证明他只是一个第三方存储变量

Lambda表达式遍历

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第9张图片

  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() {
            @Override
            public void accept(String s) {
                System.out.println(s);
                //aaa
                //bbb
                //ccc
            }
        });*/

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

总结

集合体系结构 Collection遍历方式 迭代器遍历 增强for遍历 增强for细节 Lambda表达式遍历_第10张图片

你可能感兴趣的:(windows)