Java 每日一题: for 与 foreach 的区别 ?

news2024/9/20 22:42:09

for 循环:是最基本的循环结构,可以通过初始化语句、循环条件和迭代语句来控制循环的执行。

foreach 循环(也称为增强型 for 循环):用于遍历集合或数组中的元素,简化了遍历过程,没有显式地控制索引,而是直接访问每一个元素。

1)for、foreach 都能遍历集合或者数组,在面对复杂逻辑的情况下,for 的效率更高。

2)for 可以删除元素;foreach 不能,只能通过迭代器的 remove去删除。

3)for 可以修改集合里面的元素/属性;foreach 不能修改元素,只能修改元素里面的属性。

4)for 适用于自定义步长、需要获取索引的场景; 适用于需要访问每个元素而不关心元素索引的场景。

foreach 不能删除元素的原因如下:

foreach 内部使用迭代器,它会在每次遍历会记录 List 集合内部的 modcount 作为预期值,即迭代器自己的 expectedModCount,如果直接使用 list.remove 则是 List 集合内部的 modcount 会自增,而期望值没变,则会抛出异常 ConcurrentModificationException。

示例代码(错误的方式):

List<String> list = new ArrayList<>(Arrays.asList("one", "two", "three"));
for (String item : list) {
    if ("two".equals(item)) {
        list.remove(item); // 这将抛出 ConcurrentModificationException
    }
}

示例代码(正确的方式):

List<String> list = new ArrayList<>(Arrays.asList("one", "two", "three"));
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String item = it.next();
    if ("two".equals(item)) {
        it.remove(); // 安全删除
    }
}

foreach 不能修改元素的原因也是如此。

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

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

相关文章

虚拟局域网——VLAN

VLAN的定义 VLAN virtual local Area Network 虚拟局域网&#xff0c;将物理上的局域网LAN在逻辑上进行划分 使用VLAN技术可以有效隔离广播域&#xff0c;减少网络中不必要的带宽消耗&#xff0c;如图&#xff0c;192.168.1.1发送一个广播帧&#xff0c;那么在这个广播域中的所…

HBuilder X中配置vue-cli项目和UI库

目录 一.前端项目结构 二.在HBuilder X中搭建vue-cli项目 1. 安装node.js前端环境 2. HBuilder X创建一个vue-cli项目 3. vue-cli项目结构 4. 如何运行前端项目 5. 创建组件 6. 组件路由(页面跳转) 6.1 创建router目录 6.2 使用路由 6.3 在main.js中配置路由 6.4 路…

多多OJ评测系统 在前端脚手架Vue-Cli中设置页面路由

目录 设置页面路由 我们把菜单上的路由改成读取路由文件 设置成export 导出路由 在刚刚的原始路由 index.ts中导入就行了 在这边引入我们的路由文件 我们之后点击菜单 我们的路由文件是这样的 但是没有跳转 写一下事件 接下来要同步路由到菜单项 自己定义监听函数 …

【吊打面试官系列-Dubbo面试题】Dubbo 服务降级,失败重试怎么做?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo 服务降级&#xff0c;失败重试怎么做&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo 服务降级&#xff0c;失败重试怎么做&#xff1f; 可以通过 dubbo:reference 中设置 mock"return null"…

认知是门槛、红利和自己人生的奇异点

认知是门槛、红利和自己人生的奇异点 我发现&#xff0c;身边绝大部分有钱人&#xff0c;「认知」都已经处于比较高的层次&#xff0c;人的认知其实分6个层级: 第一层&#xff0c;环境层第二层&#xff0c;行为层第三层&#xff0c;能力层第四层&#xff0c;BVR 层第五层&…

Android WebViewClient 的 `shouldOverrideUrlLoading` 方法

简介 在Android开发中&#xff0c;WebView是一个强大的工具&#xff0c;可以在你的应用中显示网页内容。了解 WebViewClient 中的 shouldOverrideUrlLoading 方法是至关重要的&#xff0c;因为这个方法允许你控制 URL 在 WebView 中的处理方式。 在本文中&#xff0c;我们将详…

鼠标宏怎么设置?适合游戏玩家的通用鼠标宏工具分享

在很多大型游戏当中&#xff0c;鼠标的操作效率成为决定游戏成败的因素之一。好用的鼠标及按键设置可以帮助玩家简化很多游戏操作步骤&#xff0c;轻松提升游戏操作效率。鼠标宏的出现使得人们在游戏、日常办公中带来极大地便利。今天小编将详细介绍鼠标宏在游戏种的作用以及常…

【Three.js基础学习】17.imported-models

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 课程回顾&#xff1a; 如何在three.js 中引入不同的模型&#xff1f; 1. 格式 &#xff08;不同的格式&#xff09; https://en.wikipedia.org/wiki/List_of_file_form…

基于单片机控制的升降式焊接工作台的设计

摘 要: 设计一种基于单片机控制的升降式焊接工作台&#xff0c;由机械系统和单片机控制系统组成 。 采用 STC89C51 单片机为电路控制核心&#xff0c;独立键盘和共阴极 7 段数码管显示器作为外设&#xff0c;对升降式焊接工作台单片机控制系统中的主控电路 、 显示电路、 键…

精选3款屏幕录制软件,总有一款适合你

随着技术的不断发展&#xff0c;屏幕录制已成为我们生活中不可或缺的一部分&#xff0c;无论是录制在线会议、制作教程、游戏直播还是分享演示文稿&#xff0c;屏幕录制软件都发挥着重要作用。本文将详细介绍3款主流的屏幕录制工具&#xff0c;并分步骤阐述它们的使用方法&…

CogVideo 实测,智谱「清影」AI视频生成,全民免费,连 API 都开放了!

不得不说&#xff0c;AI 视频生成界最近非常火热~ 前有快手「可灵」开放内测&#xff0c;一下子带火了老照片修复&#xff0c;全网刷屏&#xff1a; 怕是你还没拿到内测资格&#xff0c;被称为 “国货之光” 的「可灵」就结束了免费无限量模式。每天只有66点的免费额度&#x…

小程序的运营方法:从入门到精通

随着科技的快速发展&#xff0c;小程序已成为我们日常生活和工作中不可或缺的一部分。小程序无需下载安装&#xff0c;即用即走的特点深受用户喜爱。那么&#xff0c;如何运营好一个小程序呢&#xff1f;下面就为大家分享一些小程序的运营方法。 一、明确目标用户 在运营小程序…

sqlserver 连接数据4064

用sa登录&#xff0c;找到对应的登录名&#xff0c;右键属性&#xff0c;设置默认数据库

Android APP 音视频(03)CameraX预览与MediaCodec编码

说明&#xff1a; 此CameraX预览和编码实操主要针对Android12.0系统。通过CameraX预览获取yuv格式数据&#xff0c;将yuv格式数据通过mediacodec编码输出H264码流&#xff08;使用ffmpeg播放&#xff09;&#xff0c;存储到sd卡上。 1 CameraX 和 MediaCodec简介 1.1 CameraX…

【区块链】如何发行自己的加密货币到以太坊测试网络,remixIDE发行自己的数字货币

如何发行自己的加密货币到以太坊测试网络 环境 reminx在线编辑器&#xff1a;https://remix.ethereum.org/安装有小狐狸钱包插件&#xff08;MetaMask&#xff09; 如何部署代币&#xff1f; 创建一个名字叫做HelloMyToken.sol的文件。编写好智能合约&#xff0c;这边我要发…

RedHat9 | Ansible 处理任务失败

环境版本说明 RedHat9 [Red Hat Enterprise Linux release 9.0]Ansible [core 2.13.3]Python [3.9.10]jinja [3.1.2] 1. 忽略任务失败 Ansible评估各任务的返回代码&#xff0c;从而确定任务是成功还是失败通常而言&#xff0c;当任务失败时&#xff0c;Ansible将立即在该主…

【2024年国际高等学校数学建模竞赛IMMCHE】问题 A:金字塔石块的运输 问题分析及数学模型及求解代码

【2024 年国际高等学校数学建模竞赛&#xff08;IMMCHE&#xff09;】问题 A&#xff1a;金字塔石块的运输 问题分析及数学模型及求解代码 Problem A: Transportation of Pyramid Stones 1 题目 建造金字塔是古埃及文明的杰出成就之一。它们不仅是建筑奇迹&#xff0c;也是人…

1.C基础_计算机基础知识

计算机构成 计算机是由输入设备、输出设备、内存储器、外存储器、CPU构成&#xff0c;具体框图如下&#xff1a; 输入设备&#xff1a;将其他信号转换为计算机能识别的电信号的设备&#xff0c;如传感器 输出设备&#xff1a;将电信号转换为其他信号&#xff0c;如显示器 存…

SAM与OpenAI发布的CLIP强强联手(SAM2CLIP 和 CLIP2SAM),实现22000类的分割与识别

Abstract CLIP 和 Segment Anything Model&#xff08;SAM&#xff09;是卓越的视觉基础模型&#xff08;VFMs&#xff09;。SAM 在各种领域的分割任务中表现出色&#xff0c;而 CLIP 以其零样本识别能力而闻名。本文深入探讨了将这两种模型整合到一个统一框架中的方法。具体而…

2024101读书笔记|《飞花令·冬》——三冬雪压千年树,四月花繁百尺藤

2024101读书笔记|《飞花令冬》——三冬雪压千年树&#xff0c;四月花繁百尺藤 《飞花令冬&#xff08;中国文化古典诗词品鉴&#xff09;》素心落雪 编著&#xff0c;飞花令得名于唐代诗人韩翃《寒食》中的名句“春城无处不飞花”&#xff0c;类似于行酒令&#xff0c;是文人们…