使用Java 8将List <v>转换为新对象V.

时间:2016-05-04 14:28:03

标签: java list java-8

我有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);

我怎样才能做到这一点?

1 个答案:

答案 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());
}