gpt4 book ai didi

java - 仅在另一个集合的列表中填充附加/额外字段(使用 lambda)

转载 作者:行者123 更新时间:2023-11-30 06:43:55 26 4
gpt4 key购买 nike

我有一个原始 Collection ,List<Reviewers> , 和一个新的 List<ReviewPerson>其中一些字段来自 Reviewers将被复制到ReviewPerson .

新列表以特殊方式构建,而不是直接来自reviewers.stream().map(...) .但最后,我需要复制每个 bean 中存在的 2 个附加列,statuscomments .

List<Reviewers> originalList = ... // from DAO
if (!originalList.isEmpty()) {
List<ReviewPerson> newList = new ArrayList<ReviewPerson>();

// this fills out some columns of the ReviewPerson, not all;
// must use this partial construction from service class
newList.addAll(service.initialPopulation());

// At the end, need to copy: (1) status, (2) comments
// ...
}

问题是我做不到,

originalList.stream()
.map(obj -> new ReviewPerson(obj.getField1(), obj.getField2(),
// ...
obj.getStatus(), obj.getComments()))
.collect(Collectors.toList());

因为我没有在集合中构建新对象。我该怎么办?

最佳答案

一个常见的解决方案是流式传输列表的(大概对应的)索引,并使用相同的索引访问两个列表:

IntStream.range(0, originalList.size()).forEach(i -> {
newList.get(i).setFieldA(originalList.get(i).getFieldA();
newList.get(i).setFieldB(originalList.get(i).getFieldB();
// etc...
});

不过说实话,这可能是为了流而流。有时,一个很好的老式直接 for 循环只是一个更好的解决方案。

关于java - 仅在另一个集合的列表中填充附加/额外字段(使用 lambda),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617553/

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