单列集合顶层接口Collection

news2024/12/22 20:46:15

在这里插入图片描述

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

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


集合体系结构

  • 一、单列集合顶层接口Collection
  • 二、Collection 的遍历方式
    • 2.1 迭代器遍历
    • 2.2 增强for遍历
    • 2.3 Lambda表达式遍历
  • 三、List集合的特有方法

一、单列集合顶层接口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<E> 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.当迭代器遍历完集合时,再强行访问没有元素的位置,会报错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);
        }
    }
  • 细节
  • 修改增强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);
            }
        });
    }
  • 底层原理
@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();
        }
    }
  • 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));
    }

三、List集合的特有方法

  • Collection的方法List都继承了
  • Lst集合因为有索引,所以多了很多索引操作的方法.
方法名称说明
void add(int index,E element)在此集合中的位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被修改的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习小白理解之一元线性回归

关于机器学习&#xff0c;百度上一搜一大摞&#xff0c;总之各有各的优劣&#xff0c;有的非常专业&#xff0c;有的看的似懂非懂。我作为一名机器学习的门外汉&#xff0c;为了看懂这些公式和名词真的花了不少时间&#xff0c;还因此去着重学了高数。 不过如果不去看公式&…

软件推荐:wiztree

简要介绍 近期C盘占满&#xff0c;找到了这款优秀的软件wiztree。 wiztree称得上最快的磁盘空间分析器&#xff0c;界面简洁明晰&#xff0c;操作简单快捷&#xff0c;无广告。 下载地址&#xff1a;https://www.diskanalyzer.com/download 软件截图

Opencv cuda版本在ubuntu22.04中安装办法,解决Could NOT find CUDNN的办法

文章目录 概要下载cuda的runfile版本配置环境变量官网下载cudann安装Opencv依赖包下载opencv和opencv_contrib并解压准备编译安装anaconda环境执行编译命令安装OpenCV并检查是否安装成功 概要 解决以下安装问题&#xff1a; -- Could NOT find CUDNN: Found unsuitable versi…

OpenCascade绘制贝塞尔曲线

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛。 贝塞尔曲线完全由其控制点决定其形状, &#xff4e;个控制点对应着&#xff4e;&#xff0d;&#xff11;阶的贝塞尔曲线&#xff0c;并且可以通过递归的方式来绘制。 一阶: 二阶: 高阶&#xff1a; …

雷士、书客、小米的护眼台灯谁的性价比最高?三款护眼台灯真实测评

护眼台灯怎么选一直是许多家长为孩子选台灯时的一个大难题&#xff0c;主要因为市场上的台灯种类太多&#xff0c;而且这些产品中混杂了许多不专业品牌&#xff0c;甚至包括许多劣质台灯和网红品牌&#xff01;同时也经常能够看到报道很多“抽检不合格”的情况发生&#xff0c;…

S08-如何冻结表格行与列

通常表格第一行或第一列的数据都是数据归类的标题 所以比较常用到的是冻结首行首列 具体操作是点击菜单栏的“开始”-“冻结窗格”“冻结首行”

图像语义分割 FCN图像分割网络网络详解

图像语义分割 FCN图像分割网络网络详解 0、介绍1、VGG16网络结构2、转置卷积3、FCN-32S、FCN-16S&#xff0c;FCN-8S网络结构4、损失函数5、膨胀卷积6、FCN(Backbone-ResNet-50)6.1 项目框架6.2 ResNet50网络结构6.3 FCN(Backbone-ResNet-50)网络结构6.4 FCN(Backbone-ResNet-5…

关于接口测试——自动化框架的设计与实现

一、自动化测试框架 在大部分测试人员眼中只要沾上“框架”&#xff0c;就感觉非常神秘&#xff0c;非常遥远。大家之所以觉得复杂&#xff0c;是因为落地运用起来很复杂&#xff1b;每个公司&#xff0c;每个业务及产品线的业务流程都不一样&#xff0c;所以就导致了“自动化…

LVS和keepalived

Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案&#xff0c;可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器&#xff08;MASTER&#xff09;和备份服务器&#xff08;BACKUP&#xff09;两种角色的服务器&#x…

怎么自制gif动画?简单一招快速搞定

众所周知gif动图的画面非常的丰富生动&#xff0c;并且体积小传播方便&#xff0c;在当下的网络中是非常的受欢迎。那么&#xff0c;这种gif格式的图片是怎么制作的呢&#xff1f;下面&#xff0c;给大家分享一款专业的gif动态图片制作&#xff08;https://www.gif.cn/&#xf…

Ubuntu 安装PostgreSQL

网上有各种版本的&#xff0c;也可以去官网看官方的文档。我是下载的PostgreSQL-11.4版本的。找到以后直接复制网上的压缩包链接就可以。 $ mkdir /opt/postgresql && cd /opt/postgresql $ wget https://ftp.postgresql.org/pub/source/v11.4/postgresql-11.4.tar.gz…

如何计算3种卷积之后的尺寸(普通卷积,转置卷积,空洞卷积)

文章目录 前言一、普通卷积二、转置卷积三、空洞卷积 前言 三种卷积之后的feature map的尺寸如何计算。包括普通卷积&#xff0c;转置卷积&#xff0c;空洞卷积。可以在下面这个链接看到三种卷积的动态图。 卷积动态图 一、普通卷积 普通卷积比较简单了&#xff0c;其计算方式…

由于找不到msvcr110.dll 无法继续执行的解决方法分享(最新)

msvcp110.dll 是 Microsoft Visual C 2010 Redistributable Package 中的一个组件&#xff0c;它包含了一些运行时库文件。当计算机缺少这个文件时&#xff0c;可能会出现一些问题&#xff0c;如程序无法正常运行、系统不稳定等。下面是 6 种修复方法&#xff1a; 第1种方法&am…

内网穿透的应用-结合内网穿透实现在线远程Linux DataEase,数据可实时进行可视化分析

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务…

华为小型智能园区网络解决方案

云时代来袭&#xff0c;数字化正在从园区办公延伸到生产和运营的方方面面&#xff0c;智慧校园&#xff0c;柔性制造&#xff0c;掌上金融和电子政务等&#xff0c;面对各种各样的新兴业态的涌现&#xff0c;企业需要构建一张无所不联、随心体验、业务永续的全无线网络&#xf…

数据采集技术在MES管理系统中的应用及效果

在现代制造业中&#xff0c;MES生产管理系统已成为生产过程中不可或缺的一部分。MES管理系统能够有效地将生产计划、生产执行、质量管理等各个生产环节有机地衔接起来&#xff0c;从而实现生产过程的全面优化。本文将以某车间为例&#xff0c;探讨结合MES系统的数据采集技术的应…

10.正则表达式匹配

10.正则表达式匹配 上述5种可匹配情况的举例&#xff0c;便于理解&#xff1a; 1、a与ab星号是匹配的&#xff0c;分析&#xff1a;a与a匹配&#xff0c;让 b星号看作出现0次。 2、abb与ab*匹配&#xff0c;分析&#xff1a;ab与ab星号匹配&#xff0c;让b多出现1次时&#xff…

Windows10关闭小娜最好方法是什么?

Windows10关闭小娜最好方法是什么&#xff1f;Windows10系统内的小娜可以帮助大家实现各种操作和提供一系列的便捷功能。但是&#xff0c;有些用户并不需要小娜的帮助&#xff0c;所以想要关闭小娜功能&#xff0c;下面小编给大家介绍关闭Windows10系统内小娜的最好方法&#x…

一次对app使用socket通信的渗透思路记录

0x1 概述 ​ 本篇文章记叙了一次测试的目标为app&#xff0c;且该app采用了socket进行通信时&#xff0c;一个非常便秘的渗透测试思路。 0x2 app分析 ​ 首先拿到app&#xff0c;对其使用VPN代理抓包、WIFI代理抓包均未果&#xff0c;于是决定脱壳看看&#xff0c;使用MT管理…

【VsCode】vscode创建文件夹有小图标显示和配置

效果 步骤 刚安装软件后&#xff0c; 开始工作目录下是没有小图标显示的。 如下图操作&#xff0c;安装vscode-icons 插件&#xff0c;重新加载即可 创建文件夹&#xff0c;显示图标如下&#xff1a;