• 单列集合顶层接口Collection



    在这里插入图片描述

    🐌个人主页: 🐌 叶落闲庭
    💨我的专栏:💨
    c语言
    数据结构
    javaEE
    操作系统
    Redis

    石可破也,而不可夺坚;丹可磨也,而不可夺赤。


    一、单列集合顶层接口Collection

    • Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
    方法名称说明
    public boolean add(E e)把给定的对象添加到当前集命中
    public void clear()清空集合中所有的元素
    public boolean remove(E e)把给定的对象在当前集合中删除
    public boolean contains(object obj)判断当前集合中是否包含给定的对象
    public boolean isEmpty()判断当前集合是否为空
    public int size()返回集合中元素的个数/集合的长度
    • List 系列集合:添加的元素是有序、可重复、有索引
    • Set 系列集合:添加的元素是无序、不重复、无索引

    二、Collection 的遍历方式

    2.1 迭代器遍历

    • 迭代器在ava中的类是Iterator,迭代器是集合专用的遍历方式。
    • Collection集合获取迭代器
    方法名称说明
    Iterator iterator()返回迭代器对象,默认指向当前集合的0索引
    • Iterator中的常用方法
    方法名称说明
    boolean hasNext()判断当前位置是否有元素,有元素返回true,没有元素返回false
    E next()获取当前位置的元素,并将迭代器对象移向下一个位置
    public static void main(String[] args) {
            //创建集合
            Collection<String> coll = new ArrayList<>();
            coll.add("aaa");
            coll.add("bbb");
            coll.add("ccc");
            coll.add("ddd");
            //迭代器遍历
            Iterator<String> it = coll.iterator();
            while (it.hasNext()) {
                String str = it.next();
                System.out.println(str);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 细节:
    • 1.当迭代器遍历完集合时,再强行访问没有元素的位置,会报错NoSuchElementException
    • 2.迭代器遍历完毕,指针不会复位
    • 3.循环中只能用一次next方法
    • 4.迭代器遍历时,不能用集合的方法进行增加或者删除

    2.2 增强for遍历

    • 增强for的底层就是迭代器,为了简化迭代器的代码书写的
    • 它是JDK5之后出现的,其内部原理就是一个Iterator迭代器
    • 所有的单列集合和数组才能用增强for进行遍历
    public static void main(String[] args) {
            //创建集合
            Collection<String> coll = new ArrayList<>();
            coll.add("aaa");
            coll.add("bbb");
            coll.add("ccc");
            coll.add("ddd");
            System.out.println("----------增强for----------");
            for (String s : coll) {
                System.out.println(s);
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 细节
    • 修改增强for中的变量,不会改变集合中原本的数据。

    2.3 Lambda表达式遍历

    • 得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。
    • 匿名内部类方式
    public static void main(String[] args) {
            //创建集合
            Collection<String> coll = new ArrayList<>();
            coll.add("aaa");
            coll.add("bbb");
            coll.add("ccc");
            coll.add("ddd");
            System.out.println("----------匿名内部类方式----------");
            coll.forEach(new Consumer<String>() {
                @Override
                public void accept(String s) {
                    System.out.println(s);
                }
            });
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 底层原理
    @Override
        public void forEach(Consumer<? super E> action) {
            Objects.requireNonNull(action);
            final int expectedModCount = modCount;
            @SuppressWarnings("unchecked")
            final E[] elementData = (E[]) this.elementData;
            final int size = this.size;
            for (int i=0; modCount == expectedModCount && i < size; i++) {
                action.accept(elementData[i]);
            }
            if (modCount != expectedModCount) {
                throw new ConcurrentModificationException();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • forEach会对集合进行遍历,将得到的集合元素传给accep()方法,方法内的参数就是集合中的元素
    public static void main(String[] args) {
            //创建集合
            Collection<String> coll = new ArrayList<>();
            coll.add("aaa");
            coll.add("bbb");
            coll.add("ccc");
            coll.add("ddd");
            System.out.println("----------Lambda方式----------");
            coll.forEach(s-> System.out.println(s));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    三、List集合的特有方法

    • Collection的方法List都继承了
    • Lst集合因为有索引,所以多了很多索引操作的方法.
    方法名称说明
    void add(int index,E element)在此集合中的位置插入指定的元素
    E remove(int index)删除指定索引处的元素,返回被修改的元素
    E set(int index,E element)修改指定索引处的元素,返回被修改的元素
    E get(int index)返回指定索引处的元素
  • 相关阅读:
    【紧急情况】:回宿舍放下书包的我,花了20分钟敲了一个抢购脚本
    旅游出行类APP如何找到策略优势,最大化流量红利
    Rabbit加密算法:性能与安全的完美结合
    SpringBoot分页其实很简单
    一文详解,数据仓库、数据库、数据中台、数据湖的区别
    【零基础入门JavaSE】全面解析数组,数组知识点汇总
    Java基础进阶网络编程-TCP和UDP协议
    函数调用的代价与优化
    软考知识点之需求管理
    xshell安装完成在windows不能打开
  • 原文地址:https://blog.csdn.net/qq_64743563/article/details/133244033