java - Java 流将对象 List 的每个属性设置为另一个 List
问题描述
我目前有一个对象列表,例如
List<Foo> fooList = new ArrayList<>();
Foo 在哪里:
public class Foo {
public Bar bar;
// getters and setters
}
现在有了另一个,List<Bar> barList
我想将每个元素设置为使用 Java 流的Bar
每个内部Foo.Bar
元素。fooList
map
我尝试使用with 函数来做到这一点,setBar
但我不能在里面调用“set” map
。
解决方案
你可以这样做。它返回一个新的更改Foo
对象列表。原来的也改了。我本可以使用 peek 来调用更改,但peek
以这种方式使用被认为是不好的做法。
IntStream.range(0, fooList.size()).mapToObj(i -> {
fooList.get(i).setBar(barList.get(i));
return fooList.get(i);})
.collect(Collectors.toList());
我不会为此使用流,而是使用简单的 for 循环。例如,
for (int i = 0; i < fooList.size(); i++) {
fooList.get(i).setBar(barList.get(i));
}
或使用增强的 forloop 和本地索引。
int i = 0;
for (Foo f : fooList) {
f.setBar(barList.get(i++));
}
fooList
这些解决方案假定存在元素到元素的一对一有序映射barList
。
推荐阅读
- c# - 将 StyleCop 签入策略与 StyleCop+ 一起使用
- python - Pandas 合并数据框列
- sequelize.js - 续集嵌套条件
- aws-api-gateway - 在 aws API 网关中共享相同父路由的两个服务
- python-3.x - Python configparser 自动转换为布尔值
- c# - 在 WPF 中创建自定义可重用用户控件,弄清楚如何组合进度条和滑块?
- c++ - 是否存在一个 range::views::group_by 对应项,它考虑了所有元素,而不仅仅是连续的元素?
- sql - 在 hive/impala 中运行多个 sql 查询以测试通过或失败
- kotlin - 最佳实践是什么:Verticles 中的业务逻辑还是单独的?
- mysql - 用 MySQL 5.7 模拟 PARTITION OVER