Java中foreach用法及常用集合操作

AD20 Channel-Offset Error 解决办法 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言AD20 PCB相同电路模块ROOM格式复用时出现 Channel-Offset Error 解决办法一、问题现象二、解决办法 前言 AD20 PCB相同电路模块ROOM格式复用时出现 Channel-Offset Error 解决办法 一、问题现象 我们经常在使用Room格式快速布局相同模块电路时出现以下问题, 二、解决办法 相同模块电路PCB布局复制的过程网上有很多,这里不再做赘述,步骤都差不多,只说问题根源; 1:. 阅读详情

foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 
foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。 foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){     引用了x的java语句;} 下面通过几个例子简单例子看看foreach是如何简化编程的。

1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,

但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。

我这里用的是Junit的进行的测试。


package com.test;

import java.util.ArrayList;

/**
 * 增强for循环
 * 
 */
public class EnhanceDemo {
	/**
	 * 操作数组
	 */
	@Test
	public void testEnhance1() {
		int[] i = { 1, 2, 3, 4 };
		for (int num : i) {
			System.out.println("testEnhance1--> num: " + num);
		}
	}

	/**
	 * 操作List集合
	 */
	@Test
	public void testEnhance2() {
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		for (int n : list) {
			int num = n;
			System.out.println("testEnhance2--> num: " + num);

		}
	}

	/**
	 * 传统方式
	 */
	@Test
	public void testMap() {
		Map<String,String> map = new HashMap<String,String>();
		// Map map = new LinkedHashMap(); // LinkedMap是有序的
		map.put("1", "aaaa");
		map.put("2", "bbbb");
		map.put("3", "cccc");
		map.put("4", "dddd");
		// 拿到keySet,保存所有的key,通过key获取到value
		Set<String> set = map.keySet();
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			String value = (String) map.get(key);
			System.out.println(key + " = " + value);
		}

		// foreach
		/*for (Object key : set) {
			String value = map.get(key);
			System.out.println(key + " === " + value);
		}*/

	}

	/**
	 * 传统方式2
	 */
	@Test
	public void testMap2() {
		Map<String,String> map = new HashMap<String,String>();
		// Map map = new LinkedHashMap(); // LinkedMap是有序的
		map.put("1", "aaaa");
		map.put("2", "bbbb");
		map.put("3", "cccc");
		map.put("4", "dddd");
		// 拿到entrySet它单个的键值对存放
		Set<Entry<String, String>> set = map.entrySet();
		Iterator<Entry<String, String>> iterator = set.iterator();
		while (iterator.hasNext()) {
			Entry<String, String> entry = iterator.next();
			System.out.println(entry.getKey() + " == " + entry.getValue());
		}
		// foreach
		/*for (Entry<String, String> obj : set) {
			Entry<String, String> entry = obj;
			entry.getKey();
			System.out.println(entry.getKey() + "=== === " + entry.getValue());
		}*/
		 
	}

	/**
	 * 增强for循环需要注意的几个地方: 
	 *  1,它值适合迭代数据(取数据),而不适合修改数据,并不会修改集合的内容(大小etc)
	 *  2,需要修改集合的内容,则需要用传统的方式。
	 */
	@Test
	public void foreachTest() {
		int[] i = { 1, 2, 3, 4 };
		for (int j : i) {
			j = 10;
			System.out.println("foreach方式:" + i[1]);
		}

		for (int j = 0; j < i.length; j++) {
			System.out.print(i[j]);
			i[j] = 10;
			System.out.println(" ,传统方式修改:" + i[j]);
		}

		List<String> list = new ArrayList<String>();
		list.add("1");
		for (Object object : list) {
			object = "100";
			System.out.println(list.get(0));
		}
	}
}

上面遍历Map通过了两种方法:keySet()和entrySet()。

总结

1,foreach语句是for语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(如:数组下标越界问题)。

2,相对老的for语句来说是个很好的补充。提倡能用foreach的地方就不要再用for了,提高了编程便捷性。

3,在用到对集合或者数组索引的情况下,foreach显得力不从心,这个时候是用传统的for语句的搞定。

4,foreach一般结合泛型使用。



AI Agent Harness Engineering 开发效率工具:Prompt工程、调试与监控平台 随着AI Agent技术从原型探索走向企业级落地,开发者普遍面临Prompt迭代无版本管控、Agent执行黑盒无法定位错误、上线后无监控导致故障频发、多团队协作效率低下四大核心痛点,据2024年LLMOps行业报告显示,没有配套工具链的Agent开发团队平均迭代周期是有工具链团队的6倍,线上故障率高达23%,平均资源浪费超过60%。 阅读详情

相关推荐

Xilinx FPGA 100G RDMA开发实战:基于AXI Lite配置的ROCE V2高速通信系统搭建

本文详细介绍了在Xilinx FPGA上搭建100G ROCE V2高速通信系统的实战过程。通过分析RDMA技术优势与FPGA实现的必要性,重点阐述了基于AXI Lite接口配置ERNIC IP核的关键步骤,包括硬件系统构建、驱动开发及与商用网卡的互通测试,旨在实现兼具高性能与灵活性的网络加速方案。

js777的博客 576

详解Java中foreach、for循环语句以及实例测试

详解Java中foreach、for循环语句以及实例测试

m0_54158068的博客 5086

混合部署 操作系统混合部署

在openEuler Embedded 22.03中,已经集成了OpenAMP相关支持,并与openEuler的SIG Zephyr合作实现了openEuler Embedded与实时操作系统Zephyr在QEMU平台上的混合部署。具体的混合部署方式取决于设备的硬件和软件支持。例如,可以使用虚拟机软件(如VirtualBox)在Linux操作系统上运行Android虚拟机,从而实现Linux和Android的混合部署。需要注意的是,混合部署涉及到设备的硬件和软件兼容性,以及操作系统的配置和管理。

dianqicyuyan的博客 1763

Java foreach语句的用法

Java foreach语句用法使用如何使用Java1.5出现的foreach语句foreach语句for循环foreach语句的使用注意事项 如何使用Java1.5出现的foreach语句 foreach在遍历数组、集合方面,foreach 为开发者提供了极大的方便。foreach 循环语句是 for 语句的特殊简化版本,主要用于执行遍历功能的循环。 foreach语句 foreach 循环语句的语法格式如下: for(数据类型 变量名:数组) { 需要执行的语句块; } 举一个简单的例子:

m0_56642224的博客 1万+

[GXYCTF2019]BabyUpload1 -- .htaccess文件解析与蚁剑实战指南

本文深入解析了[GXYCTF2019]BabyUpload1文件上传漏洞的实战利用。通过绕过后缀名与内容检测,上传包含PHP代码的.jpg文件,并利用.htaccess文件强制服务器将其解析为PHP脚本。文章详细介绍了.htaccess的原理、构造方法、Content-Type绕过技巧,并演示了如何使用中国蚁剑连接Webshell获取Flag,为Web安全学习提供了完整实战指南。

weixin_29016315的博客 509

别再死记硬背窗函数公式了!用MATLAB实战汉宁窗FIR滤波器,从频谱图看懂‘主瓣’和‘旁瓣’

本文通过MATLAB实战演示汉宁窗FIR滤波器的设计过程,帮助读者从频谱图直观理解主瓣与旁瓣的特性。文章详细对比了矩形窗与汉宁窗的频谱差异,并提供了高通滤波器设计的完整代码示例,适用于数字信号处理学习和工程应用。

weixin_30555125的博客 490

java中foreach的用法

java中foreach,可以认为是增强版的for语句循环,它可以减少代码量,但是不是所有的foreach都可以代替for循环。 foreach的语句格式:for(元素类型type 元素变量value :遍历对象obj){ 引用x的java语句 } 用法1:输出一维数组 用法2:输出二维数组 foreach的局限性 foreach是for循环的增强版本,简化了编程,提高了代码的可读性和安全...

qq_44840148的博客 10万+

手把手教你学Simulink--基于光伏(PV)系统的建模与仿真场景:-不同天气条件下光伏系统的输出性能分析

本文介绍了使用Simulink和Simscape Electrical工具箱进行光伏系统建模与仿真的完整流程。内容涵盖准备工作、模型构建、仿真分析三大步骤,重点演示了如何模拟不同天气条件(光照强度、温度变化)对光伏输出性能的影响。通过添加PVArray模块、配置参数、设置环境变化条件、连接测量仪器等操作,实现了光伏系统在动态天气条件下的输出特性分析。文章还提供了仿真参数设置建议和结果分析方法,帮助用户理解环境因素与光伏性能的关联性,为光伏系统设计和优化提供参考。

MHD0815的博客 189

40个Java集合面试问题和答案

Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安

小地盘的诺克萨斯 5732

秋叶ComfyUI整合包使用FRP实现公网访问教程 ComfyUI内网穿透 秋叶整合包

最近在做 ComfyUI 的实验时,我发现很多小伙伴都遇到一个问题:本地启动的 ComfyUI 服务只能在本地访问,想要通过公网远程访问,就必须借助来实现。作为一名前端开发工程师,我花了点时间把 ComfyUI 启动器和 FRP 配置整合了一下,今天就分享给大家。本文适合已经了解。需要注意的是 穿透到公网的话任何人都能访问 为了安全建议看我另一篇帖子加上密码验证 防止恶意攻击。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1347

【PowerBI专栏】PowerBI导入MYSQL数据库

本文介绍了在PowerBI中连接MySQL数据库的方法。首先需要下载并安装MySQL官方.NET连接驱动(推荐8.4.0版本),安装完成后重启PowerBI。连接时需填写服务器IP和数据库名称等必填参数。文章详细说明了连接配置步骤,包括账户设置、数据表选择以及可能遇到的数据格式转换问题处理。最后指导用户完成数据清洗后进入PowerPivot进行后续计算。特别提醒最新9.4版本可能存在兼容性问题,建议使用稳定的8.4版本连接器。

技术与管理的平衡木- 690

Java中的for each循环

增强型for循环简化了遍历操作,提高了代码的可读性和编写效率,尤其是在不关心索引或不需要修改元素的情况下非常有效。增强型for循环,通常被称为“for-each”循环,在Java和其他支持该特性的编程语言中,提供了一种更简洁的方式来遍历数组或可迭代对象。如果需要获取集合或数组中的元素位置(索引),for-each循环无法直接提供,需使用传统for循环或结合List的indexOf()方法。for-each循环只能用于读取数据,如果需要修改集合或数组的内容,应使用传统的for循环。

全局可见 1344

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java中List集合Stream流详解

java

wh柒八九的博客 2426

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

集合框架(1)Collection接口与Iterator迭代器

11> boolean retainAll(Collection coll):从当前集合中删除两个集合中不同的元素,使得当前集合仅保留与coll集合中的元素相同的元素,即当前集合中仅保留两个集合的交集,即this = this ∩ coll; boolean removeAll(Collection coll):从当前集合中删除所有与coll集合中相同的元素。boolean containsAll(Collection coll):判断coll集合中的元素是否在当前集合中都存在。

2401_88237139的博客 769

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

第七章:集合(作业)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2501_93330982的博客 268

Java集合---02--Collection常用方法

Collection- 单列集合 Collection接口中的15个方法的使用 常用方法 add(Object e):将元素e添加到集合coll中 size():获取添加的元素的个数 addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中 clear():清空集合元素 isEmpty():判断当前集合是否为空 public class CollectionTest { @Test public void test1(){

时光里的博客 302

吃透JAVA的Stream流操作,多年实践总结

好啦,关于JAVA Stream的理解要点与使用技能的阐述就先到这里啦。那通过上面的介绍,各位小伙伴们是否已经跃跃欲试了呢?快去项目中使用体验下吧!当然啦,如果有疑问,也欢迎找我一起探讨探讨咯。

Jernnifer_mao的博客 351

java中集合类forEach的用法

1、forEach介绍 先来一波源码,可以看出中国是在jdk8后出现的方法,用于做元素的for循环。 这个方法是 java.lang包下的 interface Iterable<T>的,代码如下 /** * Performs the given action for each element of the {@code Iterable} ...

qq6412110的博客 2064

java8 新特性 List,Map集合的foreach使用方法

java8 新特性list集合的foreach用法java8 foreach常用版foreachMap集合的foreach用法demo list集合的foreach用法 List<String> array= new Array<String>(); java8 foreach java8写法还是有些局限性的,循环中不能用运算符 array.forEach(list -> { System.out.println(list); }); 常用版foreach for

qq_42967728的博客 3031

MyBatis foreach 标签常用方法总结

  在 MyBatis 中,常常会遇到集合类型的参数,虽然我们可以通过 OGNL 表达式来访问集合的某一个元素,但是 OGNL 表达式无法遍历集合。foreach 标签就是专门用来解决这类问题的,foreach 标签可以用来遍历数组、列表和 Map 等集合参数,实现批量操作或一些简单 SQL 操作。  foreach 元素的属性主要有 item,index,open,separator,close,collection。各属性含义如下所示。  集合中元素迭代时的别名,该参数为必选。  在 list 和数组中

长安明月的博客 1万+

foreach的用法

foreach遍历数组和集合 格式: for(元素类型 元素变量x:遍历对象(数组或集合)){ 引用元素变量x的语句; } 例: int[] array = new int[5]; for(int x : array){ System.out.println(x); } 遍历MAP集合格式如下: for (Map.Entry<K, V> entry : map.entrySet()) action.accept(entry.getKey(), entry.getValue());

weixin_43151557的博客 4万+

foreach用法

总之,foreach 是一种非常实用的语法糖,可以使代码更简洁、更易读,提高代码的可维护性和可读性。要注意,在迭代过程中,由于 foreach 遍历的是集合对象的副本,而非原始集合对象,因此如果在循环内部修改集合元素,则不会影响原始集合。如果需要修改集合元素,可以考虑使用迭代器 Iterator 进行操作。其中 element 表示集合中的元素,collection 表示要遍历的集合,循环体中的代码会执行若干次,每次都会取出 collection 中的一个元素,赋值给 element,然后运行循环体。

weixin_51378457的博客 1万+

为什么不能在foreach循环中修改集合?

阿里巴巴JAVA开发手册》中有这样一条:不要在 foreach 循环里进行元素的 add / remove 操作,remove 元素使用 Iterator 方式。经测试,当在 foreach 循环中 add / remove 集合元素,可能会抛出 ConcurrentModificationException 异常,下面介绍进行详细说明。

zhhui1123的博客 2217

Java中List的forEach用法详解

java复制下载// 对每个元素进行平方操作// 输出:1 4 9 16 25});

BillKu的博客 2189

JAVA之forEach遍历集合

JAVA之forEach遍历集合 在JDK 8中,根据Lambda表达式的特性还增加了一个forEach(Consumer action)方法来遍历集合,该方法所需要的参数是一个函数式接口 import java.util.ArrayList; import java.util.List; public class forEachTest01 { public static void main(String[] args) { //创建ArrayList集合 L

HR的博客 4493

foreach用法,常用

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,cl

一只小小的猿的博客 3万+
上一篇: Eclipse快捷键与使用技巧总结
下一篇: 总结过去10年的程序员生涯
池哥搬砖
博客等级 码龄17年 255粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值