目录
集合体系结构

 
 list系列集合:添加的元素式有序,可重复,有索引的

 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遍历方式
迭代器遍历
迭代器不依赖索引
 
    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
    }
 
总结











