qq空间网站是多少,免费空间建网站,一个公司做2个产品网站怎么做,电子商务网站建设考纲Java 增强型 for 循环#xff08;Enhanced for Loop#xff09;详解
增强型 for 循环#xff08;也称为 “for-each” 循环#xff09;是 Java 从 JDK 5 开始引入的一种便捷循环语法#xff0c;旨在简化对数组或集合类的迭代操作。 1. 基本语法
语法格式
for (类型 变量…Java 增强型 for 循环Enhanced for Loop详解
增强型 for 循环也称为 “for-each” 循环是 Java 从 JDK 5 开始引入的一种便捷循环语法旨在简化对数组或集合类的迭代操作。 1. 基本语法
语法格式
for (类型 变量 : 迭代对象) {// 循环体
}类型迭代对象中元素的类型。变量每次迭代时存储当前元素的变量。迭代对象数组或实现了 Iterable 接口的集合如 List、Set 等。 2. 使用示例
2.1 遍历数组
public class EnhancedForArray {public static void main(String[] args) {int[] numbers {1, 2, 3, 4, 5};for (int num : numbers) {System.out.println(num); // 输出1, 2, 3, 4, 5}}
}2.2 遍历集合
import java.util.ArrayList;
import java.util.List;public class EnhancedForList {public static void main(String[] args) {ListString fruits new ArrayList();fruits.add(Apple);fruits.add(Banana);fruits.add(Cherry);for (String fruit : fruits) {System.out.println(fruit); // 输出Apple, Banana, Cherry}}
}3. 特性与限制
3.1 特性 简洁性 不需要手动管理索引或迭代器代码更易读。对比传统 for 循环不需要获取数组长度或调用集合的迭代器。 适用性广泛 可用于数组、List、Set、Map遍历 entrySet()、keySet() 或 values()。
3.2 限制 无法修改集合结构 增强型 for 循环中不能直接对集合进行 add 或 remove 操作否则会抛出 ConcurrentModificationException。 示例 ListString list new ArrayList();
list.add(A);
list.add(B);for (String s : list) {if (s.equals(A)) {list.remove(s); // 会抛出异常}
}如果需要修改集合结构可以使用 迭代器 IteratorString iterator list.iterator();
while (iterator.hasNext()) {String s iterator.next();if (s.equals(A)) {iterator.remove(); // 安全地删除元素}
}无法访问索引 增强型 for 循环中无法直接获取元素的索引。如果需要索引需使用传统 for 循环String[] fruits {Apple, Banana, Cherry};
for (int i 0; i fruits.length; i) {System.out.println(Index i : fruits[i]);
}只支持顺序访问 适用于 Iterable 接口的集合如 List、Set不适用于需要随机访问的场景。 4. 遍历 Map 的增强型 for
4.1 遍历 keySet
遍历 Map 的所有键
import java.util.HashMap;
import java.util.Map;public class EnhancedForMap {public static void main(String[] args) {MapString, Integer map new HashMap();map.put(A, 1);map.put(B, 2);map.put(C, 3);for (String key : map.keySet()) {System.out.println(Key: key , Value: map.get(key));}}
}4.2 遍历 entrySet
更高效地同时遍历键和值
for (Map.EntryString, Integer entry : map.entrySet()) {System.out.println(Key: entry.getKey() , Value: entry.getValue());
}5. 适用场景 遍历数组 对于大小已知且不需要修改的数组增强型 for 是最佳选择。 遍历集合 遍历 List、Set 等集合尤其是当集合不需要修改时。 遍历 Map 使用 entrySet() 时增强型 for 简洁而高效。 简化代码 避免手动管理索引或迭代器。 6. 常见问题
6.1 为什么增强型 for 循环不能修改集合
增强型 for 底层使用了 迭代器 来遍历集合如果直接修改集合结构如添加或删除元素会导致迭代器失效抛出 ConcurrentModificationException。
6.2 如何在增强型 for 中访问索引
可以在增强型 for 中手动维护索引
String[] fruits {Apple, Banana, Cherry};
int index 0;
for (String fruit : fruits) {System.out.println(Index index : fruit);index;
}7. 底层实现
增强型 for 循环的本质是使用了 迭代器 来实现的。
伪代码
对于 Iterable 对象
for (Type element : collection) {IteratorType it collection.iterator();while (it.hasNext()) {Type element it.next();// 循环体}
}对于数组
for (Type element : array) {for (int i 0; i array.length; i) {Type element array[i];// 循环体}
}8. 总结
优点
简化代码适合大多数迭代场景避免手动处理索引和迭代器。可读性高语法简洁专注于元素处理。
缺点
不能直接操作索引。不支持修改集合结构。适用于顺序访问不适合随机访问场景。
增强型 for 循环是 Java 中对迭代器模式的进一步抽象它让遍历变得更加简单、高效是开发中非常常用的工具。 文章转载自: http://www.morning.ntzfj.cn.gov.cn.ntzfj.cn http://www.morning.lmfxq.cn.gov.cn.lmfxq.cn http://www.morning.rzmlc.cn.gov.cn.rzmlc.cn http://www.morning.kbyp.cn.gov.cn.kbyp.cn http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.jyznn.cn.gov.cn.jyznn.cn http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn http://www.morning.yhsrp.cn.gov.cn.yhsrp.cn http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn http://www.morning.frllr.cn.gov.cn.frllr.cn http://www.morning.mqfhy.cn.gov.cn.mqfhy.cn http://www.morning.qrlkt.cn.gov.cn.qrlkt.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn http://www.morning.xylxm.cn.gov.cn.xylxm.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.zwndt.cn.gov.cn.zwndt.cn http://www.morning.frnjm.cn.gov.cn.frnjm.cn http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn http://www.morning.wdykx.cn.gov.cn.wdykx.cn http://www.morning.prsxj.cn.gov.cn.prsxj.cn http://www.morning.tjndb.cn.gov.cn.tjndb.cn http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.wtrjq.cn.gov.cn.wtrjq.cn http://www.morning.fjglf.cn.gov.cn.fjglf.cn http://www.morning.yldgw.cn.gov.cn.yldgw.cn http://www.morning.lxcwh.cn.gov.cn.lxcwh.cn http://www.morning.xykst.cn.gov.cn.xykst.cn http://www.morning.fglyb.cn.gov.cn.fglyb.cn http://www.morning.ckdgj.cn.gov.cn.ckdgj.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.xqcbz.cn.gov.cn.xqcbz.cn http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn http://www.morning.lrzst.cn.gov.cn.lrzst.cn http://www.morning.nkqnn.cn.gov.cn.nkqnn.cn http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn http://www.morning.qclmz.cn.gov.cn.qclmz.cn http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.dmjhp.cn.gov.cn.dmjhp.cn http://www.morning.mgtmm.cn.gov.cn.mgtmm.cn http://www.morning.yhpl.cn.gov.cn.yhpl.cn http://www.morning.kgphd.cn.gov.cn.kgphd.cn http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn http://www.morning.homayy.com.gov.cn.homayy.com http://www.morning.lskrg.cn.gov.cn.lskrg.cn http://www.morning.jpbky.cn.gov.cn.jpbky.cn http://www.morning.xrpwk.cn.gov.cn.xrpwk.cn http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn http://www.morning.wpwyx.cn.gov.cn.wpwyx.cn http://www.morning.rltw.cn.gov.cn.rltw.cn http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn http://www.morning.kgslc.cn.gov.cn.kgslc.cn http://www.morning.clpfd.cn.gov.cn.clpfd.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.jjzrh.cn.gov.cn.jjzrh.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.fgsct.cn.gov.cn.fgsct.cn http://www.morning.yrdn.cn.gov.cn.yrdn.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.gbyng.cn.gov.cn.gbyng.cn http://www.morning.gcspr.cn.gov.cn.gcspr.cn http://www.morning.wmfr.cn.gov.cn.wmfr.cn http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn http://www.morning.mumgou.com.gov.cn.mumgou.com http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn http://www.morning.mznqz.cn.gov.cn.mznqz.cn http://www.morning.fyxr.cn.gov.cn.fyxr.cn http://www.morning.gyzfp.cn.gov.cn.gyzfp.cn http://www.morning.dhmll.cn.gov.cn.dhmll.cn http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn http://www.morning.ycnqk.cn.gov.cn.ycnqk.cn http://www.morning.zrpys.cn.gov.cn.zrpys.cn http://www.morning.zxcny.cn.gov.cn.zxcny.cn http://www.morning.pyzt.cn.gov.cn.pyzt.cn