文章目录
Map集合该如何完成遍历~
Map就像一个大西瓜 我们需要将它切开 才能完成遍历
首先我们创建一个Map集合并向集合添加数据
Map<String,Integer> map = new HashMap<>();
//Map集合集合添加元素 键值对 = 主键 + 值
map.put("小翔",210);//体育生
map.put("小俐",160);//艺术生
map.put("小黑",720);//我家小狗
一个大西瓜三种刀法:
No1 : keySet() : 得到所有主键对象组成的Set集合 map.get(k) => 得到值
Map<String,Integer> map = new HashMap<>();
map.put("小翔",210);
map.put("小俐",160);
map.put("小黑",720);
//forEach方式
Set<String> ks = map.keySet();//得到所有的主键对象
for(String k : ks){
Integer v = map.get(k);//通过k找v
System.out.println(k + " : " + v);
}
//迭代器方式
//建议使⽤for循环⽅式 while循环⽅式迭代器对象在while循环体的外⾯,会在内存中占⽤⼀定的资源!不推荐使⽤!
for (Iterator<String> it = map.keySet().iterator();it.hasNext();){
String k = it.next();
Integer v = map.get(k);
System.out.println(k + " : " + v);
}
No2 : values() : 得到所有的值对象组成的Collection集合 不能反向找k
Map<String,Integer> map = new HashMap<>();
map.put("小翔",210);
map.put("小俐",160);
map.put("小黑",720);
Collection<Integer> vs = map.values();//拿到Map集合所有的值对象组成的Collection集合
for(Integer v : vs){
System.out.println(v);
}
No3 : entrySet() : 得到所有键值对对象(Map.Entry)组成的Set集合
Map<String,Integer> map = new HashMap<>();
map.put("小翔",210);
map.put("小俐",160);
map.put("小黑",720);
//forEach方式
Set<Map.Entry<String,Integer>> es = map.entrySet();//将Map集合横向切片 得到键值对对象组成的Set集合
for(Map.Entry<String,Integer> e : es){
//每个e对象 都代表Map集合当中的一条记录 一个键+一个值
String k = e.getKey();//拿到当前记录的主键
Integer v = e.getValue();//拿到当前记录的值
System.out.println(k + " : " + v);
}
//迭代器方式
for (Iterator<Map.Entry<String, Integer>> entries = map.entrySet().iterator();entries.hasNext();){
Map.Entry<String, Integer> entry = entries.next();
String k = entry.getKey();
Integer v = entry.getValue();
System.out.println(k + " : " + v);
}
JDK8.0开始如何使用lambda表达式 一行遍历整个Map集合~
Map<String,Integer> map = new HashMap<>();
map.put("小翔",210);
map.put("小俐",160);
map.put("小黑",720);
map.forEach((k,v) -> System.out.println( k + " : " + v));