gpt4 book ai didi

java - forEach 循环 Java 8 for Map 条目集

转载 作者:IT老高 更新时间:2023-10-28 13:51:18 26 4
gpt4 key购买 nike

我正在尝试将每个循环的旧常规转换到 java7 到 java8 的映射条目集的每个循环,但我遇到了错误。这是我要转换的代码:

for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}

这是我所做的更改:

map.forEach( Map.Entry<String, String> entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());

});

我也试过这样做:

Map.Entry<String, String> entry;
map.forEach(entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());

});

但仍然面临错误。我得到的错误是:Lambda 表达式的签名与函数式接口(interface)方​​法 accept(String, String)

的签名不匹配

最佳答案

阅读 the javadoc : Map<K, V>.forEach()预计 BiConsumer<? super K,? super V>作为参数,以及 BiConsumer<T, U> 的签名抽象方法是accept(T t, U u) .

所以你应该传递一个 lambda 表达式,它接受两个输入作为参数:键和值:

map.forEach((key, value) -> {
System.out.println("Key : " + key + " Value : " + value);
});

如果您在 map 的入口集而不是 map 本身上调用 forEach(),您的代码将起作用:

map.entrySet().forEach(entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
});

关于java - forEach 循环 Java 8 for Map 条目集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32264773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com