stream流的使用-获取list集合中对象的单个字段list集合,进行累加操作
package com.drc.java8.stream.practice;
import com.drc.java8.stream.practice.domain.Person2;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class ListPersonPractice {
// 投资人集合
List<Person> PersonList = new ArrayList<>();
// 初始化投资人
{
PersonList.add(new Person2("张三", 11, BigDecimal.valueOf(10000), BigDecimal.valueOf(0.08)));
PersonList.add(new Person2("李四", 21, BigDecimal.valueOf(20000), BigDecimal.valueOf(0.18)));
PersonList.add(new Person2("王五", 31, BigDecimal.valueOf(30000), BigDecimal.valueOf(0.28)));
PersonList.add(new Person2("赵四", 41, BigDecimal.valueOf(40000), BigDecimal.valueOf(0.38)));
}
/**
* 计算
*/
@Test
public void testCalcAgeAndMoney() {
// 计算年龄之和
Integer ages = PersonList.stream().map(Person::getAge).reduce((a, b) -> (a + b)).get();
System.out.println(ages);
// money是资产,rateOfReturn 是资产年收益率,计算一年后几人的资产总额
BigDecimal assetsAmt = PersonList.stream().map(person ->
person.getMoney().multiply(person.getRateOfReturn().add(BigDecimal.ONE))).reduce(BigDecimal::add).get();
System.out.println(assetsAmt);
}
}