gpt4 book ai didi

java - 使用 Java 流将 Java List 转换为另一个

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:28 25 4
gpt4 key购买 nike

我有一个类测试

public class Test{
String codes;
String field 1;
....
String field n;
}

我有一个测试对象列表

List<Test> objects, code can be one or more with a comma separated
testObj1("A", "field1".."fieldn")
testObj2("B,C", ...)
testObj3("D,E,F", ....)
testObj4("G", ...)

尝试将此 list1 转换为新的 list2,每个代码 A、B、C... 保留剩余字段以成为其自己的对象。

List<Test>
testObj1("A", ....)
testObj2("B", ....)
testObj3("C", ....)

list1.stream().collect(Collectors.toList())

我使用循环(Sudo 代码)实现了这一点,但正在寻找更好的逻辑

for(loop thru list1){
String[] codesArr = testObj1.codes.split(",");
for (String code : codesArr) {
//Create new Obj
Test obj = new Test(code, testObj1.copyotherfields);
//Add obj to list2
}
}

最佳答案

您可以将 Stream.mapflatMap 一起使用:

List<Test> finalList = list1.stream()
.flatMap(e -> Arrays.stream(e.getCodes().split(","))
.map(c -> new Test(c, e.getField1(), e.getFieldn())))
.collect(Collectors.toList());

这假定您的 Test 类具有类似于以下实现的构造函数:

class Test {
String codes;
String field1;
String fieldn;

// would vary with the number of 'field's
Test(String codes, String field1, String fieldn) {
this.codes = codes;
this.field1 = field1;
this.fieldn = fieldn;
}
// getters and setters
}

关于java - 使用 Java 流将 Java List 转换为另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244478/

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