第一种根据键找值
先获取Map集合的全部键的Set集合
遍历键的Set集合,然后通过键提取对应的值
package DomeMap;import java.util.HashMap;import java.util.Map;import java.util.Set;public class Test4 {public static void main(String[] args) {// TODO Auto-generated method stubMap buy=new HashMap();buy.put("苹果手机", 2);//添加键值对buy.put("智能手表", 1);buy.put("java书", 1);buy.put("c语言书", 1);buy.put("西瓜", 2);//Map集合的遍历 //先把所有键取出来Set s1=buy.keySet();//开始根据键找值for (String key : s1) {Integer value=buy.get(key);System.out.println(key+"->>>>"+value);}}}
第二种方式
使用foreach遍历Map集合发现Map集合的键值对元素直接是没有类型的。所以不能直接用foreach遍历集合
可以通过调用Map的方法:entrySet把Map结合转化成Set集合的形式
打包后在内部会以键值对对象的形式存储{(key,value),key,value),key,value),key,value)}
更加的符合面向对象
Set<Map.Entry> 就可以看成键值对类型遍历了
public class Test5 {public static void main(String[] args) {// TODO Auto-generated method stubMap buy=new HashMap();buy.put("苹果手机", 2);//添加键值对buy.put("智能手表", 1);buy.put("java书", 1);buy.put("c语言书", 1);buy.put("西瓜", 2);Set<Map.Entry> en=buy.entrySet();for (Map.Entry entry : en) {String key=entry.getKey();Integer value=entry.getValue();System.out.println(key+"->>>"+value);}}}
第三种方式:Lamubda表达式(最简单)
得力于JDK8开始的新技术Lamubda表达式,提供了一种更简单,更直接的遍历集合的方式
package DomeMap;import java.util.HashMap;import java.util.Map;import java.util.function.BiConsumer;public class Lmtest {public static void main(String[] args) {// TODO Auto-generated method stub// TODO Auto-generated method stubMap buy=new HashMap();buy.put("苹果手机", 2);//添加键值对buy.put("智能手表", 1);buy.put("java书", 1);buy.put("c语言书", 1);buy.put("西瓜", 2);//Lamubda表达式遍历buy.forEach(new BiConsumer() {@Overridepublic void accept(String t, Integer u) {System.out.println(t+"->>>"+u);}});}}
Lamubda还可以继续化简
化简的规则为
参数类型可以省略不写
如果只有一个参数,参数类型可以省略,同时(也可以省略)
如果Lamubda表达式的方法体代码只有一行代码。可以省略大括号不写,同时省略分号
如果Lamubda表达式的方法体只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省省略分号不写
package DomeMap;import java.util.HashMap;import java.util.Map;import java.util.function.BiConsumer;public class Lmtest {public static void main(String[] args) {// TODO Auto-generated method stub// TODO Auto-generated method stubMap buy=new HashMap();buy.put("苹果手机", 2);//添加键值对buy.put("智能手表", 1);buy.put("java书", 1);buy.put("c语言书", 1);buy.put("西瓜", 2);//Lamubda表达式遍历buy.forEach((t,u)-> {System.out.println(t+"->>>"+u);});}}