1. 程式人生 > >通過stream()方法,一條程式碼計算List集合中相同欄位的結果。

通過stream()方法,一條程式碼計算List集合中相同欄位的結果。

一、下面寫了一個例子

定義一個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