Map集合的三种遍历方式
1.通过键找值
package com.map;
import java.util.HashMap;
import java.util.Set;
public class MapDemo1 {
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<>();
hm.put("张三", "北京");
hm.put("李四", "上海");
hm.put("王五", "南京");
/*1.获取所有的键*/
Set<String> keySet = hm.keySet();
/*2.遍历set集合,获取每一个键*/
for (String key : keySet) {
/*3.调用map中的get方法,根据键找到值*/
String value = hm.get(keySet);
System.out.println(key + "---" + value);
}
}
}
2.通过键值对对象获取键和值
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<>();
hm.put("张三", "北京");
hm.put("李四", "上海");
hm.put("王五", "南京");
/*1.获取所有键值对对象*/
Set<Map.Entry<String, String>> entryset = hm.entrySet();
/*2.遍历set集合中的键值对对象*/
for (Map.Entry<String, String> entry : entryset) {
/*3.通过键值对对象,获取键和值*/
System.out.println(entry.getKey()+"---"+entry.getValue());
}
}
3.通过foreach方法遍历
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<>();
hm.put("张三", "北京");
hm.put("李四", "上海");
hm.put("王五", "南京");
hm.forEach(new BiConsumer<String, String>() {
@Override
public void accept(String key, String value) {
System.out.println(key+"---"+value);
}
});
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<>();
hm.put("张三", "北京");
hm.put("李四", "上海");
hm.put("王五", "南京");
hm.forEach((key, value) -> System.out.println(key+"---"+value));
}
Map集合练习
需求:字符串aababvabvdabvde
请统计字符串中每一个字符出现的次数,并按照以下格式输出
输出结果:
a(5)b(4)c(3)d(2)e(1)
代码如下:
package com.map;
import java.util.Map;
import java.util.TreeMap;
import java.util.function.BiConsumer;
public class Maptest1 {
public static void main(String[] args) {
String info = "acabaab";
TreeMap<Character, Integer> tm = new TreeMap<>();
char[] chars = info.toCharArray();
for (char aChar : chars) {
if (!tm.containsKey(aChar)) {
tm.put(aChar, 1);
}else {
tm.put(aChar, tm.get(aChar) + 1);
}
}
StringBuilder sb = new StringBuilder();
tm.forEach((key, value) -> sb.append(key).append("(").append(value).append(")"));
System.out.println(sb);
}
}