gpt4 book ai didi

Java 8 迭代列表内的列表和stream.map()

转载 作者:行者123 更新时间:2023-11-30 02:25:06 28 4
gpt4 key购买 nike

我想知道是否有一个单行选项可以解决此问题。

我有一颗 bean ,

public class DataA {
private String name;
private String email;
private List<String> accountNumberName;
}

DataA 中的示例值是

name="user1",email="user@a.b.com",accountNumberName=["100", "101", "102"]等等..

我有一张帐号和姓名的 map Map<String, String> accountNumberNameMapaccountNumberNameMap中的样本数据就像,

{"100"="Account A", "101" = "Account B", "102" = "Account C"}

我要转换DataAname="user1",email="user@a.b.com",accountNumberName=["100 - Account A", "101 - Account B", "102 - Account C"]

我有一个DataA集合List<DataA>想要转换我所有的accountNumberName在“列表”内有 account number - Account name使用accountNumberNameMap .

我可以通过使用几个循环来完成此操作,然后将帐号转换为帐号 - 帐户名称。想知道 Java8 流中是否有一种简单的方法可以做到这一点。

最佳答案

如果您不介意直接修改列表中的实例,则可以将 forEachreplaceAll 结合使用(我假设我可以访问 accountNumberName 为简单起见,但您也可以通过 setter 轻松更改它)。

list.forEach(d -> d.accountNumberName.replaceAll(acc -> acc + " - " + accountNumberNameMap.getOrDefault(acc, "")));

如果不想修改现有实例,可以这样做(假设存在复制构造函数):

list.replaceAll(d -> new DataA(d.name, d.email, d.accountNumberName.stream().map(name -> name + " - " + accountNumberNameMap.getOrDefault(name, "")).collect(toList())));

(然后,如果您不想修改原始列表,只需对其进行流式传输/收集,而不是使用 replaceAll)

关于Java 8 迭代列表内的列表和stream.map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849298/

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