一、HashMap的几种遍历方式
Map<Integer, String> map = new HashMap<>();
map.put(1, "路遥");
map.put(2, "村上春树");
map.put(3, "余秋雨");
map.put(4, "莫言");
我们以map为例
方法一:
先取出map所有的key值, 通过key值获取对应的value值
System.out.println("方法一");
Set keySet = map.keySet();
System.out.printf("增强for循环实现:\t");
for (Object key : keySet) {
System.out.print(key + "-" + map.get(key) + " ");
}
System.out.println();
System.out.printf("迭代器实现:\t");
Iterator iterator = keySet.iterator();
while (iterator.hasNext()) { //判断步骤不可少
Object key = iterator.next();
System.out.print(key + "-" + map.get(key) + " ");
}
方法二:
直接取出map所有的value值 (这种方法无法获取key)
System.out.println("方法二");
Collection values = map.values();
System.out.print("增强for循环实现:\t");
for (Object value : values) {
System.out.print(value + " ");
}
System.out.println();
System.out.print("迭代器实现:\t");
Iterator iterator = values.iterator();
while (iterator.hasNext()) {
Object value = iterator.next();
System.out.print(value + " ");
}
方法三:
通过EntrySet 获取key-value
System.out.println("方法三");
Set entrySet = map.entrySet();
System.out.print("增强for循环实现:\t");
for (Object entry : entrySet) {
Map.Entry element = (Map.Entry) entry;
System.out.print(element.getKey() + "-" + element.getValue() + " ");
}
System.out.println();
System.out.print("迭代器实现:\t\t");
Iterator iterator = entrySet.iterator();
while (iterator.hasNext()) {
Object entry = iterator.next();
Map.Entry element = (Map.Entry) entry;
System.out.print(element.getKey() + "-" + element.getValue() + " ");
}
完整代码
import java.util.*;
/**
* @author 谢鑫
* @version 1.0
* @date 2021/12/8 20:54
*/
public class Test {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, "路遥");
map.put(2, "村上春树");
map.put(3, "余秋雨");
map.put(4, "莫言");
System.out.println(map);
System.out.println("方法一");
Set keySet = map.keySet();
System.out.print("增强for循环实现:\t");
for (Object key : keySet) {
System.out.print(key + "-" + map.get(key) + " ");
}
System.out.println();
System.out.printf("迭代器实现:\t\t");
Iterator iterator = keySet.iterator();
while (iterator.hasNext()) { //判断步骤不可少
Object key = iterator.next();
System.out.print(key + "-" + map.get(key) + " ");
}
System.out.println("\n");
System.out.println("方法二");
Collection values = map.values();
System.out.print("增强for循环实现:\t");
for (Object value : values) {
System.out.print(value + " ");
}
System.out.println();
System.out.print("迭代器实现:\t\t");
iterator = values.iterator();
while (iterator.hasNext()) {
Object value = iterator.next();
System.out.print(value + " ");
}
System.out.println("\n");
System.out.println("方法三");
Set entrySet = map.entrySet();
System.out.print("增强for循环实现:\t");
for (Object entry : entrySet) {
Map.Entry element = (Map.Entry) entry;
System.out.print(element.getKey() + "-" + element.getValue() + " ");
}
System.out.println();
System.out.print("迭代器实现:\t\t");
iterator = entrySet.iterator();
while (iterator.hasNext()) {
Object entry = iterator.next();
Map.Entry element = (Map.Entry) entry;
System.out.print(element.getKey() + "-" + element.getValue() + " ");
}
}
}
输出结果:
2021 12.20更新
今天在看java核心技术卷一 映射一章时,学习到了一个更简单明了的lambda表达式遍历 代码如下
map.forEach((Integer, String) -> System.out.println(Integer + "-" + String));
输出结果如下