• Collection接口的常用方法


    Collection接口的常用方法

    Collection接口实现类的特点

    public interface Collection<E> extends Iterable<E>
    
    • 1
    • collection实现子类可以存放多个元素 每个元素可以是Object
    • 有些Collection的实现类 可以存放重复的元素 有些不可以
    • 有些Collcetion实现类 有些是有序的List 有些无序的Set
    • Collection接口没有直接的实现子类 是通过它的子类接口Set和List来实现的
    {
        public static void main(String[] args) {
            List list = new ArrayList();
    
            //add 添加单个元素
            list.add("jack");
            list.add(10);   //本质 list.add(new Integer(10))
            list.add(true);
            System.out.println("list="+list);
    
            //remove删除指定元素
           // list.remove(0); //下标
            list.remove(true); //指定删除某个元素
            System.out.println("list="+list);
    
            //contains 查找元素是否存在
            System.out.println(list.contains("jack"));
    
            //size 获取元素个数
            System.out.println(list.size());
    
            //isEmpty 判断是否为空
            System.out.println(list.isEmpty());
    
            //clear 清空
            list.clear();
            System.out.println("list="+list);
    
            //addAll 添加多个元素
            ArrayList list2 = new ArrayList();
            list2.add("红楼梦");
            list2.add("三国");
            list.addAll(list2);
            System.out.println("list="+list);
    
            //containsAll 查找多个元素是否存在
            System.out.println(list.containsAll(list2));
    
    
            list.add("聊斋");
            //removeAll 删除多个元素
            list.removeAll(list2);
            System.out.println("list="+list);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    Collection接口遍历元素方式1–使用Iterator迭代器

    • Iterator对象称为迭代器 主要用于遍历Collection集合中的元素
    • 所有实现了Collection接口的集合类都有一个iterator()方法 用以返回一个实现了Iterator接口的对象 即可以返回一个迭代器
    • Iterator仅用于遍历集合 Iterator本身并不存放对象

    迭代器执行原理

    Iterator iterator = col.iterator();
    
    • 1
    • 得到一个集合的迭代器
    • hasNext() 判断是否还有下一个元素
    • next()作用下移
    • 在调用it.next()方法之前必须调用it.hasNext()进行检测 若不调用 且下一条记录无效 it.next()会抛异常
            Collection col = new ArrayList();
            col.add(new Book("三国演义","罗贯中",10.1));
            col.add(new Book("小李飞刀","古龙",5.1));
            col.add(new Book("红楼梦","曹雪芹",34.6));
    
            System.out.println("col="+col);
            //希望遍历col集合
            //1 先得到col对应迭代器
            Iterator iterator = col.iterator();
            //2 使用while循环遍历
            while (iterator.hasNext()){ //是否还有数据
                //返回下一个元素类型是object
                Object obj = iterator.next();
                System.out.println("obj="+obj);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 当退出while循环后 这时iterator迭代器指向最后的元素 如果再调用iterator.next() 则会抛异常
    • 如果希望再次遍历 需要重置迭代器
    iterator=col.iterator();
    
    • 1

    Collection接口遍历对象方式2-for循环增强

    • 增强for循环 可以代替iterator迭代器
    • 特点 增强for就是简化版的iterator 本质一样 只能用于遍历集合或数组
            Collection col = new ArrayList();
    
            col.add(new Book("三国演义","罗贯中",10.1));
            col.add(new Book("小李飞刀","古龙",5.1));
            col.add(new Book("红楼梦","曹雪芹",34.6));
    
            //1使用增强for 在Collection集合
            //2 增强for 底层仍然是迭代器
            //3 增强for 可以理解为简化版的迭代器遍历
            for(Object book:col){
                System.out.println("book="+book);
            }
    
            //增强for也可以用在数组上
            int[] nums={1,8,10,90};
            for (int i :nums){
                System.out.println("i="+i);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    练习

     Dog d1 = new Dog("小黑", 5);
            Dog d2 = new Dog("小白", 6);
            Dog d3 = new Dog("小黄", 4);
    
            List list = new ArrayList();
    
            list.add(d1);
            list.add(d2);
            list.add(d3);
    
            Iterator iterator = list.iterator();
    
            while(iterator.hasNext()){
                Object obj = iterator.next();
                System.out.println("obj="+obj);
            }
    
            System.out.println("==========");
    
            for (Object o : list) {
                System.out.println("o="+o);
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    线程安全

    对于List: 可以使用Vector,工具类Collections. synchronizedList()方法,但推荐: CopyOnWriteArrayList。

    对于Set: 使用CopyOnWriteArraySet。

    对于Map: 使用ConcurrentHashMap hashTable是线程安全的 hashMap是线程不安全的。

  • 相关阅读:
    代码随想录算法训练营|五十三天
    《Python 计算机视觉编程》学习笔记(一)
    springboot监控
    LoadBalancer
    图的存储结构之邻接矩阵
    SpringBoot读取Resource下文件的几种方式读取jar里的excel,文件损坏
    【C++基础】实现日期类
    elementplus el-table当表格的长度大于容器的宽度导致剩下的无法显示出来
    ResourceBundleViewResolver类简介说明
    java选做实验4常用集合类使用
  • 原文地址:https://blog.csdn.net/keith32/article/details/125453893