一、关键方法
// 整形
list.stream().mapToInt(a->a.getCount()).sum()
// double类型
list.stream().mapToDouble(a->a.getWeight()).sum();
// Long类型
list.stream().mapToLong(a -> a.getPri()).sum();
// BigDecimal类型
list.stream().map(Animal::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
二、案例
1)实体类
@Data
public class Animal {
private String name;
private Integer count;
private Double weight;
private Long pri;
private BigDecimal money = BigDecimal.ZERO;
}
2)测试方法
public static void main(String[] args) {
List<Animal> list = getAnimal();
//累加
int sumInt = list.stream().mapToInt(a -> a.getCount()).sum();
System.out.println("int类型累加:" + sumInt);
double sumDouble = list.stream().mapToDouble(a -> a.getWeight()).sum();
BigDecimal bigDecimalDouble = new BigDecimal(sumDouble).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("double累加,并且保留两位小数:" + bigDecimalDouble);
long sumLong = list.stream().mapToLong(a -> a.getPri()).sum();
System.out.println("long类型累加:" + sumLong);
BigDecimal bigDecimalSum = list.stream().map(Animal::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("BigDecimal类型累加:" + bigDecimalSum);
}
public static List<Animal> getAnimal() {
List<Animal> animals = new ArrayList<>();
Animal animal1 = new Animal();
animal1.setName("猪");
animal1.setCount(2);
animal1.setWeight(150.321d);
animal1.setPri(2003L);
animal1.setMoney(new BigDecimal(5));
animals.add(animal1);
Animal animal2 = new Animal();
animal2.setName("羊");
animal2.setCount(1);
animal2.setWeight(100d);
animal2.setPri(1003L);
animal2.setMoney(new BigDecimal(10));
animals.add(animal2);
return animals;
}