PS:本文为转载文章,原文可读性会更好。文末有原文链接。ps:本文基于JDK1.8。解释。在我们平时的软件开发中,使用Java语言编写程序的读者都知道,我们有时会用到HashMap,尤其是HashMap的keySet()方法。让我们从一段代码开始;Mapmap=newHashMap();for(inti=1;i<30;i++){map.put("key"+i,i);}//1,for(HashMap.Entryentry:map.entrySet()){Stringkey=entry.getKey();intvalue=entry.getValue();System.out.println("key="+key+",value="+value);}我们平时使用的增强型for循环,经常会用到,因为遍历的目标是数组或者集合;好吧,我们先说增强for循环map.entrySet()的情况,我们先从增强for循环说起遍历数组的代码如图1所示:图片图1当图1中的代码块实际上是为了被执行时,实际上会变成图2中待执行的代码块Figure2见图2,当我们用增强的for循环遍历数组时,最终会变成:从索引处输出下标为0的元素,下标变量(var4)小于数组长度(var3)为条件,将下标变量的值加1,然后用下标将数组元素一一输出。现在我们回过头来看看注1中遍历的map.entrySet()是什么?我们打开HashMap的entrySet方法看一下;图中的entrySet方法返回一个Set集合;看这个三阶运算符,entrySet变量赋值给es变量,不管es是否为空,其实entrySet方法返回的是Set