java - 模型中的Java lambda流合并参数
问题描述
我找不到答案。我尝试将多个对象合并为一个。示例模型
public class Model {
private List<Map<String, Object>> param1;
private List<String> param2;
}
在我的代码中,我将另一个数据转换为模型。
List<Model> models = models2.stream()
.map(Optional::get)
.map(model2 -> convert(model2))
.collect(Collectors.toList());
我尝试将转换后的模型列表聚合为一个模型。喜欢:
Model model = models2.stream() ...etc
但我不知道怎么做。
解决方案
merge
最简单的方法是向您的Model
类添加一个方法:
public class Model {
private List<HashMap<String, Object>> param1;
private List<String> param2;
public Model merge (Model other) {
this.param1.addAll(other.param1);
this.param2.addAll(other.param2);
return this;
}
}
然后reduce
你的流:
Model allInOne = models2.stream()
.map(Optional::get)
.map(model2 -> convert(model2))
.reduce(Model::merge)
.get();
该merge
方法也可以是一个static Model merge (Model first, Model second)
或外部化的BinaryOperator<Model>
函数。
推荐阅读
- php - 如果值为 null,则在 laravel 集合中删除键
- c# - 如果选择了单元格,如何更改背景颜色?
- r - 获取内部模块服务器以更新 innerServerUI - Rshiny Modules
- java - 播放视频android时从Webview中删除下载选项
- laravel - 计算循环内的关系
- save - 将 textmate2 设置为使用 .java 扩展名自动保存?
- android - 您可以使用 android lvl 库从不同应用程序中检查一个应用程序的许可状态吗?
- amazon-web-services - 如果每天创建的文件少于 4 个,则需要为 AWS S3 存储桶发出警报
- arrays - 如何在c中用自然数填充数组?
- python - 如何将包含表对象的字符串转换为python中的表对象?