【发布时间】:2020-06-10 10:15:00
【问题描述】:
我完全相信我的问题很简单,但我无法用流来解决(如果有办法在没有流的情况下做到这一点也会有帮助) 假设我们有这个用户列表
public class Users {
String firstName;
String lastName;
double accountBalance;
String type;
String extraField;
}
并假设我们的列表中有以下数据
"Users": [{
"firstName": "Scott",
"lastName": "Salisbury",
"accountBalance": "100",
"type" : "A"
}, {
"firstName": "John",
"lastName": "Richards",
"accountBalance": "200",
"type" :"C"
}, {
"firstName": "John",
"lastName": "Richards",
"accountBalance": "200",
"type " : "C",
"ExtraField": "Apply"
}]
这里的预期结果是,鉴于 firstName、lastName 和 type 在列表中出现两次,只需合并常见的结果而不会丢失任何字段
预期输出
"Users": [{
"firstName": "Scott",
"lastName": "Salisbury",
"accountBalance": "100",
"type" : "A"
}, {
"firstName": "John",
"lastName": "Richards",
"accountBalance": "400",//merged values
"type " : "C",
"ExtraField": "Apply" //value that remains in one object of the list
}]
【问题讨论】:
-
bean 中可以有多少个字段?
-
@GovindaSakare 这是一个例子,假设有 5 个字段
-
您是否使用任何库来处理这些数据?例如,JSON-Simple?
-
您可以先使用
groupingBy使用提取关键字段的函数对它们进行分组;这会给你一个按键的用户列表。然后,您可以通过提供下游收集器来合并它们。 -
@daniu 好的,那我们remember it again吧。
标签: java java-stream