通過stream()方法,一條程式碼計算List集合中相同欄位的結果。
阿新 • • 發佈:2018-11-09
一、下面寫了一個例子
定義一個User類
package com.newframe.controllers.api; import lombok.Data; import java.math.BigDecimal; /** * @author:wangdong * @description: */ @Data public class User { //使用者的id private Long id; //金額 private BigDecimal money; public User(Long id,BigDecimal money){ this.id=id; this.money=money; } }
對這個類中的List
集合User
的錢進行相加求和。
package com.newframe.controllers.api; import com.google.common.collect.Lists; import java.math.BigDecimal; import java.util.List; /** * @author:wangdong * @description: */ public class TestStreamReduce { public static void main(String[] args) { List<User> users = Lists.newArrayList(); BigDecimal result1 = BigDecimal.ZERO; for (Long i = 0L; i < 10; i++){ User user = new User(i,new BigDecimal(83.23+i)); users.add(user); } //計算使用者這個list集合中,所有使用者的錢加起來的金額 //加 BigDecimal result2 = users.stream().map(User::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add); System.out.println(result2); } }
好啦。這裡只是一個簡單的示例。通過stream
你可以完成更多厲害的操作。
起到一個拋磚引玉的效果。
菜鳥網路關於這個的詳細說明。Java 8 Stream