好的,这不是一个作业问题,而是一个“我正在学习Java 8并希望最终通过认证考试”的问题。
我正在尝试理解reduce()方法,以将一个任意类别(不是大多数示例代码使用的字符串或整数)的列表减少为我的代码的单个成员。
package playground;
import java.util.Arrays;
import java.util.List;
public class TestClass {
public static class MyClass {
private int accumulator = 0;
public MyClass() {
}
public MyClass(int initValue) {
this.accumulator = initValue;
}
public int getAccumulator() {
return accumulator;
}
public void setAccumulator(int accumulator) {
this.accumulator = accumulator;
}
}
public static void main(String... args) {
MyClass mc1 = new MyClass(6);
MyClass mc2 = new MyClass(8);
MyClass mc3 = new MyClass(3);
List<MyClass> myList = Arrays.asList(mc1, mc2, mc3);
MyClass finalClass = myList.stream().reduce(new MyClass(0),
// need the correct lambda function here
);
}
}
MyClass
实例。 - Rogue(m1, m2) -> new MyClass(m1.getAccumulator() + m2.getAccumulator())
- Spotted.collect(MyClass::new, (c, e) -> c.setAccumulator(c.getAccumulator() + e.getAccumulator()), (c1, c2) -> c1.setAccumulator(c1.getAccumulator() + c2.getAccumulator()) );
可能更有效。请参阅Mutable Reduction。 - Holger