1  作用

  简化迭代器的书写格式。(注意:foreach循环的底层还是使用了迭代器遍历。)

2  适用范围

  如果是实现了Iterable接口的对象或者是数组对象都可以使用foreach循环。

3  格式

  for(数据类型 变量名 :遍历的目标){

  }

示例:

 public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("张三");
set.add("李四");
set.add("王五"); }

若想遍历这个集合,可以用迭代器

 //使用迭代器遍历集合
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println("集合的元素为: " + it.next());
}

有没有更简洁的办法呢?可以用foreach循环

 for(String it : set){
System.out.println("集合的元素:" + it);
}

这个循环应该读作 -- “循环set中的每一个元素”(for each element in set)

4  foreach循环的优点在于:相比普通for循环来更加简洁,更加不容易出错(不必为数组下标的起始值和终止值担心)

5  foreach循环应该注意的事项:

(1). foreach循环底层也是使用了迭代器获取的,只不过获取迭代器由jvm完成,不需要我们获取迭代器而已,所以在使用foreach循环变量元素的过程中不准使用集合对象对集合的元素个数进行修改。

也就是说:

 for(String it : set){
System.out.println("集合的元素:" + it);
set.remove("it");
}

上面这个调用remove方法是错误的!

(2). 普通for循环与foreach循环的区别:普通for循环可以没有变量的目标,而foreach循环一定要有变量的目标。

6  缺点:在对数组索引进行操作或者集合进行增删操作时,显得力不从心,此时不建议使用foreach循环

回顾第二点,它的使用范围,如果现在有一个Map集合,怎么对它使用foreach循环?

  通过查看API文档可得知,Map集合没有实现Iterable接口,所以Map集合不能直接使用foreach循环

  

  但是它有一个entrySet方法(Map的迭代方法),它的返回类型是Set<Map.Entry<K,V>>

  

  我们知道Set接口下是实现了Iterable接口的:

  

所以我们可以这样:

 HashMap<String, String> map = new HashMap<String, String>();
map.put("001","张三");
map.put("002","李四");
map.put("003","王五");
map.put("004","赵六");
Set<Map.Entry<String, String>> entrys = map.entrySet();
for(Map.Entry<String, String> entry : entrys){
System.out.println("键:"+ entry.getKey()+" 值:"+ entry.getValue());
}

最后的建议:若没有其他操作,单单遍历循环,能用foreach循环就用这个

最后的最后:这是JDK1.5时才存在的!

增强for循环 -- foreach循环的更多相关文章

  1. for循环,for…in循环,forEach循环的区别

    for循环,for…in循环,forEach循环的区别for循环通关for循环,生成所有的索引下标for(var i = 0 ; i <= arr.length-1 ; i++){ 程序内容 } ...

  2. java 流程执行 循环 foreach循环

    一. if分支 1. 结构  if  else if   else 2.执行原则 if  if  if 结构  会一直去执行()里的判断语句 if else if  else if 结构  只要一条( ...

  3. JavaScript之数组循环 forEach 循环输出数组元素

    var arrayAll = []; arrayAll.push(1); arrayAll.push(2); arrayAll[arrayAll.length] = 3; arrayAll[array ...

  4. 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作--java.util.ConcurrentModificationException

    摘要 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素. 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体 ...

  5. foreach循环里不能remove/add元素的原理

    foreach循环 ​    foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素.Java语言从JDK 1.5.0开始引入forea ...

  6. 有关集合的foreach循环里的add/remove

    转自:Hollis(微信号:hollischuang) 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 .foreach循环 ...

  7. PHP 循环 - For 循环基础讲解

    PHP 循环 - For 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. for 循环 for 循环用于您预先知道脚本需要运行的次数的情况. 语法 for (初始值; 条件; ...

  8. “全栈2019”Java第三十二章:增强for循环Foreach语法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. Java中的增强 for 循环 foreach

    foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理.能够提高性能,并减少代码出错的几率.在 J ...

随机推荐

  1. js中实现继承的几种方式

    首先我们了解,js中的继承是主要是由原型链实现的.那么什么是原型链呢? 由于每个实例中都有一个指向原型对象的指针,如果一个对象的原型对象,是另一个构造函数的实例,这个对象的原型对象就会指向另一个对象的 ...

  2. java中的i++和++i区别

    public class Main { public static void main(String[] args) { int i = 0; i = i++; System.out.println( ...

  3. WPF之路一:相对路径图片显示

    由于公司项目的需要,改为WPF开发,因此需要学习WPF,遇到的第一个问题就是在显示的图片的时候,写绝对路径,图片显示没有问题,但是写相对路径的时候,发现图片无法正常显示,在网上搜了一下,得到的答案是需 ...

  4. 测试一下js是否可用

      昨天刚获批通过了js权限,今天写一段小代码测试下是否可用 我用Javascript添加了 <p> <script type="text/javascript" ...

  5. QTP自动化测试框架课程的目标

    QTP自动化测试框架课程的目标 随着技术发展演变,qtp自动化测试工具有逐渐被其他工具和技术替换的趋势,所以我们三个POPTEST合伙人决定把qtp自动化测试的一套课程开放免费,这套qtp自动化测试课 ...

  6. Letter Combinations of a Phone Number:深度优先和广度优先两种解法

    Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...

  7. salesforce 零基础学习(六十八)http callout test class写法

    此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...

  8. 解决eclipse中文字很小

    新下载的eclipse4.2.1版本,显示中文字体很小,但是英文比较正常.网上查看要更改字体大小,但是更改后英文也变大了,不是想要的结果. window – preferences – general ...

  9. R语言生成随机数

    1.概述 作为一种语言进行统计分析,R有一个随机数生成各种统计分布功能的综合性图书馆.R语言可以针对不同的分布,生成该分布下的随机数.其中,有许多常用的个分布可以直接调用.本文简单介绍生成常用分布随机 ...

  10. ls命令的20个实用范例

    contents ls -l -h -lhS -l --block-size=M -a -d */ -g -G -n --color=never -i -p -r -R -t ls ~ ls --ve ...