sameet90:
私が持っているArrayList
ユーザー定義オブジェクトの従業員のように
class Employee {
String name;
Double age;
Double salary
}
私は、次のコードを経由してストリームとして上記のリストを削減しようとしています
Double totalSalary = empList.stream().parallel().filter(x-> x.getname().equalsIgnoreCase("XYZ")).reduce(0,(subTotal, sal)-> subTotal + dp.getSalary(), DoubleExpression::add);
これは、コンパイルして、エラーを与えるものではありません。どのように私は自分の所望の目的を達成することができますか?
ラビンドラRanwala:
まず、あなたがしなければならないmap
二重の給与にEmployeeオブジェクト。次に、あなただけが還元工程を行うことができます。また、還元工程は、同一の要素と二項演算子をとります。しかし、あなたはあまりにも欠陥がされて、そこに3つの引数を渡しました。
double totalSalary = empList.stream()
.filter(x -> x.getName().equalsIgnoreCase("XYZ"))
.mapToDouble(Employee::getSalary)
.sum();
ここで、同等の削減です。0は、この削減のためのアイデンティティの要素であることに注意してください。
double totalSalary = empList.stream()
.filter(x -> x.getName().equalsIgnoreCase("XYZ"))
.mapToDouble(Employee::getSalary)
.reduce(0, Double::sum);