我有V类对象列表,我想创建一个相同类V的新对象.List中对象的某些属性在列表中是相同的,并且某些属性具有不同的值。我想创建具有公共属性的新对象V,并且应该将具有不同值的属性汇总并设置到对象V中。
例如,
Class Sample {
Integer someId; // which is not unique
String someString; // Not unique
Date date;
BigDecimal value;
}
我的列表如下。
Sample s1 = new Sample(1, "1", 20151231, 10.10);
Sample s2 = new Sample(1, "1", 20151231, 20.10);
我想要新的Sample对象,其值为
new Sample(1, "1", 20151231, 10.10 + 20.10);
我怎样才能做到这一点?
答案 0 :(得分:0)
有点像这样
public static void main(String... args) {
Sample s1 = new Sample(1, "1", Calendar.getInstance().getTime(), new BigDecimal(10.10));
Sample s2 = new Sample(1, "1", Calendar.getInstance().getTime(), new BigDecimal(20.20));
List<Sample> samples = new ArrayList<>();
samples.add(s1);
samples.add(s2);
Optional<Sample> result = samples.stream().reduce((sa1,sa2)->new Sample(1, "1", Calendar.getInstance().getTime(),sa1.getValue().add(sa2.getValue())));
System.out.println(result.get());
}