gpt4 book ai didi

java - 有没有办法将双 `for` 循环更改为 java 8 lambda 表达式?

转载 作者:行者123 更新时间:2023-12-02 02:40:04 24 4
gpt4 key购买 nike

例如

 Map<String, List<String>> headers = connection.getHeaderFields();

for (String key: headers.keySet()){
for (String value: headers.get(key)){
System.out.println(key+":"+value);
}
}

此代码可以以某种方式更改为(方法引用)吗?

Consumer<String> consumer = headers::get;
headers.keySet().forEach(consumer);

但是这是不正确的。我认为有一种方法可以做到这一点:

  1. Consumer<String> consumer = headers::get;
  2. BiConsumer<String, String> header = (key, value) -> System.out.println(key+":"+value);
  3. 合并 1,2

我的想法对吗?

最佳答案

看起来像是可以使用 flatMap 的情况:

headers.entrySet().stream()
.flatMap(k -> k.getValue().stream().map(v -> k + ":" + v))
.forEach(System.out::println);

关于您关于 ConsumerBiConsumer 的问题,它完全被忽略了 - 这些只是功能接口(interface),只能用于表示函数 - 它们需要传递到某个地方被使用。

关于java - 有没有办法将双 `for` 循环更改为 java 8 lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640017/

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