對列表里某個類中的某個屬性進行求和操作非常常見。在Java 8誕生前,常用for循環(huán)手動累加,往往要寫上三四行代碼,不夠簡練。
參考鏈接
比如有個類:
class Hhd{
private String aStr;
private double bDou;
public String getaStr() {
return aStr;
}
public void setaStr(String aStr) {
this.aStr = aStr;
}
public double getbDou() {
return bDou;
}
public void setbDou(double bDou) {
this.bDou = bDou;
}
}
求和操作一行代碼便可完成,并且有一下四種方式,挑喜歡的就好~:
@Test
public void TestStreamSum() {
Hhd a = new Hhd();
a.setbDou(1.);
Hhd b = new Hhd();
b.setbDou(233.);
List<Hhd> aList = new ArrayList<>();
aList.add(a);
aList.add(b);
double allSum = aList.stream().map(Hhd::getbDou).reduce(0., Double::sum);
double allSum_1 = aList.stream().map(Hhd::getbDou).reduce(0., (x, y) -> x + y);
double allSum_2 = aList.stream().collect(Collectors.summingDouble(Hhd::getbDou));
double allSum_3 = aList.stream().mapToDouble(Hhd::getbDou).sum();
System.out.println(allSum);
System.out.println(allSum_1);
System.out.println(allSum_2);
System.out.println(allSum_3);
}