【Java 集合进阶】单练集合顶层接口collction迭代器

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

collction的遍历方式

增强for遍历

增强for的细节

lambda表达式遍历

总结

迭代器遍历

细节注意点:


collction的遍历方式

增强for遍历

  • 增强for的底层就是迭代器,为了简化迭代器的代码书写的。
  • 它是JDK5之后出现的,其内部原理就是一个Iterator迭代器。
  • 所有的单列集合和数组才能用增强for进行遍历。
格式:
for (元素的数据类型 变量名:数组或者集合){

}
for (string s : list) {
  system.out.println(s);
}

增强for的细节

修改增强for中的变量,不会改变集合中原本的数据。

for (string s : list) {
  s = "q";
}

代码演示:

package list;

import java.util.ArrayList;
import java.util.Collection;

public class collection1 {
    public static void main(String[] args) {
        /* Collection系列集合三种通用的遍历方式:
        1.迭代器遍历
        2.增强for遍历
        3.lambda表达式遍历

        增强for格式:
            for(数据类型 变量名: 集合/数组){

            }

        快速生成方式:
            集合的名字 + for 回车

        */

        //1、创建集合并添加元素
        Collection<String> coll = new ArrayList<>();
        coll.add("zhangsan");
        coll.add("lisi");
        coll.add("wangwu");

        //2、利用增强for进行遍历
        for (String s : coll) {
            s = "routing";
        }
        System.out.println(coll);
    }
}


lambda表达式遍历

得益于JDK 8开始的新技术lambda表达式,提供了一种更加简单的遍历集合的方式。

方法:
default void forEach(Consumer<? super super T> action):   //结合lambda遍历集合

代码演示:

package list;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class collection2 {
    public static void main(String[] args) {
        /* Collection系列集合三种通用的遍历方式:
        1.迭代器遍历
        2.增强for遍历
        3.lambda表达式遍历

        lambda表达式遍历:
                default void forEach(Consumer<? super T> action):
        */
        //1、创建集合并添加元素
        Collection<String> coll = new ArrayList<>();
        coll.add("zhangsan");
        coll.add("lisi");
        coll.add("wangwu");
        //2、利用匿名内部类的形式
/*        coll.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                //s依次表示集合中的每一个数据
                System.out.println(s);
            }
        });*/

        //3、lambda表达式
        //s依次表示集合中的每一个数据
        coll.forEach(s ->System.out.println(s));

    }
}

总结

  • 1.Collection是单列集合的顶层接口,所有方法被List和Set系列集合共享

  • 2.常见成员方法

    • add、clear、remove、contains、isEmpty、size
  • 3.三种通用的遍历方式:

    • 迭代器:在遍历的过程中需要删除元素,请使用迭代器。

    • 增强for、Lambda;

    • 仅仅想遍历,那么使用增强for或Lambda表达式。

迭代器遍历

代码解释:

package list;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class collection3 {
    public static void main(String[] args) {
        /*
            Collection系列集合三种通用的遍历方式:
                1.迭代器遍历
                2.增强for遍历
                3.lambda表达式遍历


             迭代器遍历相关的三个方法:
                    Iterator<E> iterator()  :获取一个迭代器对象
                    boolean hasNext()       :判断当前指向的位置是否有元素
                    E next()                :获取当前指向的元素并移动指针
        */
        //1、创建集合并添加元素
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");

        //2、获取迭代器对象
        //迭代器就好比一个箭头,默认指向集合0索引处
        Iterator<String> it = coll.iterator();

        //3、利用循环不断的去获取集合中的每一个元素
        while (it.hasNext()){
            //4、next方法的两件事情,获取元素并移动指针
            String str = it.next();
            System.out.println(str);
        }
    }
}

细节注意点:

1、迭代器遍历完毕,指针不会复位

2、循环中只能用一次next方法

3、迭代器遍历时,不能用集合的方法进行增加或者减少

package list;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class collection3 {
    public static void main(String[] args) {
        /*
            Collection系列集合三种通用的遍历方式:
                1.迭代器遍历
                2.增强for遍历
                3.lambda表达式遍历


             迭代器遍历相关的三个方法:
                    Iterator<E> iterator()  :获取一个迭代器对象
                    boolean hasNext()       :判断当前指向的位置是否有元素
                    E next()                :获取当前指向的元素并移动指针
        */
        //1、创建集合并添加元素
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");

        //2、获取迭代器对象
        //迭代器就好比一个箭头,默认指向集合0索引处
        Iterator<String> it = coll.iterator();

        //3、利用循环不断的去获取集合中的每一个元素
        while (it.hasNext()){
            //4、next方法的两件事情,获取元素并移动指针
            String str = it.next();
            System.out.println(str);
        }

        System.out.println(it.hasNext());

        Iterator<String> it2 = coll.iterator();
        while (it2.hasNext()){
            String str2 = it2.next(); // Corrected here
            System.out.println(str2);
        }

    }
}

package list;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class collection4 {
    public static void main(String[] args) {
              /*
        迭代器的细节注意点:
            1.报错NoSuchElementException
            2.迭代器遍历完毕,指针不会复位
            3.循环中只能用一次next方法
            4.迭代器遍历时,不能用集合的方法进行增加或者删除
                暂时当做一个结论先行记忆,在今天我们会讲解源码详细的再来分析。
                如果我实在要删除:那么可以用迭代器提供的remove方法进行删除。
                如果我要添加,暂时没有办法。
       */

        //1.创建集合并添加元素
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        coll.add("eee");

        //2.获取迭代器对象
        //迭代器就好比是一个箭头,默认指向集合的0索引处
        Iterator<String> it = coll.iterator();
        //3.利用循环不断的去获取集合中的每一个元素
        while (it.hasNext()){
            //4、next方法的两件事情,获取元素,并移动指针
            String str = it.next();

            if ("bbb".equals(str)) {
                it.remove();
            }
            System.out.println(str);
        }
        
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

适合初学者的Linux的综合项目

大家好&#xff0c;今天给大家介绍适合初学者的Linux的综合项目&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 对于初学者来说&#xff0c;Linux的综合项目应当既具有教育意义又…

element plus 输入框样式模仿Material-UI

获取焦点状态 自定义指令 app.directive(focus, { // 当被绑定的元素插入到 DOM 中时…… mounted(el) { const descendants el.querySelectorAll(.el-input__inner); var cssClass newLable;el.classList.add(cssClass); // 遍历并操作这些子孙节点 descendants.forE…

(24年4月2日更新)Linux安装chrome及chromedriver(Ubuntu20.0416.04)

一、安装Chrome 1&#xff09;先执行命令下载chrome&#xff1a; wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb2&#xff09;安装chrome sudo dpkg -i google-chrome-stable_current_amd64.deb踩坑&#xff1a;这里会提示如下报错&…

安卓主板MT8390(Genio 700)_MTK联发科Linux开发板方案

MediaTek Genio 700 &#xff08;MT8390&#xff09;是一款高性能的边缘 AI 物联网平台&#xff0c;专为智能家居、互动零售、工业与商业应用而设计。提供快速响应的边缘计算能力、先进的多媒体功能、广泛的传感器和连接方式&#xff0c;且支持多任务操作系统。 MT8390安卓核心…

ArrayList扩容原理

ArrayList源码分析 分析ArrayList源码主要从三个方面去翻阅&#xff1a;成员变量&#xff0c;构造函数&#xff0c;关键方法 以下源码都来源于jdk1.8 1 成员变量 DEFAULT_CAPACITY 10; 默认初始的容量**(CAPACITY) EMPTY_ELEMENTDATA {}; 用于空实例的共享空数组实例 DEFAU…

Java项目:85 springboot智能物流管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本美发门店管理系统有管理员和用户两个角色。 用户功能有项目预定管理&#xff0c;产品购买管理&#xff0c;会员充值管理&#xff0c;余额查询管理。…

文本自动粘贴编辑器:支持自动粘贴并筛选手机号码,让信息处理更轻松

在信息时代的浪潮中&#xff0c;文本处理已成为我们日常工作与生活的重要组成部分。无论是商务沟通、社交互动还是个人事务处理&#xff0c;手机号码的筛选与粘贴都显得尤为关键。然而&#xff0c;传统的文本处理方式效率低下、易出错&#xff0c;已无法满足现代人的高效需求。…

Linux(05) Debian 系统修改主机名

查看主机名 方法1&#xff1a;hostname hostname 方法2&#xff1a;cat etc/hostname cat /etc/hostname 如果在创建Linux系统的时候忘记修改主机名&#xff0c;可以采用以下的方式来修改主机名称。 修改主机名 注意&#xff0c;在linux中下划线“_”可能是无效的字符&…

disearch目录扫描工具

项目地址 GitHub - maurosoria/dirsearch: Web path scanner 安装 apt-get install dirsearch 使用 dirsearch -u http://61.147.171.105:56237/

网络协议学习——HTTPS

目录 ​编辑 一&#xff0c;认识HTTPS 二&#xff0c;加密方式 1&#xff0c;对称式加密 2&#xff0c;非对称式的加密 3&#xff0c;数据指纹&#xff08;数据摘要&#xff09; 4&#xff0c;数据签名 三&#xff0c;HTTPS的工作原理 实现方式 数字证书 一&#xff0c…

配mmdetection

总流程&#xff1a; 1. 安装conda 参考链接后面补上 列出可用的conda环境 conda env list 删除指定环境 conda remove --name myenv --all 创建并激活指定环境 conda create --name openmmlab python3.8 -y conda activate openmmlab 2. 装pytorch&#xff0c;版本别装错…

zabbix图表时间与服务器时间不一致问题

部署完zabbix后&#xff0c;有时候会发现zabbix服务器的时间明明是对的&#xff0c;但是图标的时间不对&#xff0c;通过以下的配置可以快速解决。 登录zabbix-nginx容器 docker exec -u root -it docker-compose-zabbix-zabbix-web-nginx-mysql-1 bash修改php配置文件 vi /e…

excel散点图怎么每个点添加名称

最终效果图&#xff1a; 添加图标元素->数据标签->其他数据标签选项 选择单元格中的值 手动拖动数据标签&#xff0c;调整到合适的位置。

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是&#xff1a;Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范&#xff0c;就是接口 监听器的作用是&#xff0c;监听某种变化(一般就是对…

RISC-V GNU Toolchain 工具链安装问题解决(含 stdio.h 问题解决)

我的安装过程主要参照 riscv-collab/riscv-gnu-toolchain 的官方 Readme 和这位佬的博客&#xff1a;RSIC-V工具链介绍及其安装教程 - 风正豪 &#xff08;大佬的博客写的非常详细&#xff0c;唯一不足就是 sudo make linux -jxx 是全部小写。&#xff09; 工具链前前后后我装了…

搜维尔科技:SenseGlove Nova 允许以最简单的方式操作机器人并与物体交互

扩展 Robotics 和 QuarkXR 人机界面 XR 应用 Extend Robotics 利用扩展现实技术&#xff0c;让没有机器人专业知识的个人能够远程控制机器人。他们的 AMAS 解决方案使操作员能够不受地理限制地轻松控制机器人。 需要解决的挑战【搜维尔科技】 目前&#xff0c;操作机器人是一…

day4|gin的中间件和路由分组

中间件其实是一个方法&#xff0c; 在.use就可以调用中间件函数 r : gin.Default()v1 : r.Group("v1")//v1 : r.Group("v1").Use()v1.GET("test", func(c *gin.Context) {fmt.Println("get into the test")c.JSON(200, gin.H{"…

Git指令速查

一、Git初始化 作用&#xff1a;初始化git仓库&#xff0c;想要使用git对某个项目进行管理&#xff0c;需要git init进行初始化 # 在当前目录新建一个Git代码库&#xff0c;初始化仓库。 在当前目录下生成一个隐藏文件夹.git&#xff0c;不能修改.git下的任何东西 $ git ini…

jmeter性能压测

jvm指令 jstat -gcutil -h5 -t 1 3s 发压端的tcp这么达到1000TPS jmeter的jvm的设置

六自由度Stewart控制系统matlab仿真,带GUI界面

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 六自由度Stewart平台控制系统是一种高精度、高稳定性的运动模拟装置&#xff0c;广泛应用于飞行模拟、汽车驾驶模拟、虚拟现实、精密定位等领域。其工作原理基于Stewart机构&a…