常见的统计操作:(sum/average/max/min/count)
package com.ydlclass.feature;
import org.junit.Before;
import org.junit.Test;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.IntStream;
public class LambdaTest {
List<Person> personList = new ArrayList<>();
List<Integer> simpleList = Arrays.asList(15,22,9,11,33,52,14);
@Before
public void initData(){
personList.add(new Person("张三",3000,23,"男","太原"));
personList.add(new Person("李四",7000,34,"男","西安"));
personList.add(new Person("王五",5200,22,"女","西安"));
personList.add(new Person("小黑",1500,33,"女","上海"));
personList.add(new Person("狗子",8000,44,"女","北京"));
personList.add(new Person("铁蛋",6200,36,"女","南京"));
}
/***
* 终止操作之统计操作count,average,sum,max,min
*/
@Test
public void countTest(){//流操作的意义在于中间操作比较多的时候体现出来
long count = personList.stream().count();
System.out.println(count);
}
@Test
public void averageTest(){//需要保证int类型的Stream
OptionalDouble average = simpleList.stream().mapToInt(i -> i).average();//使用此方法将引用数据类型
// 映射至基础数据类型int;并且toIntFunction这个函数会将传入的值变为int,即使此处传入的是Integer类型的,
//会由于自动拆装箱变为int类型的
average.ifPresent(System.out::println);
}
@Test
public void sumTest(){
int sum = simpleList.stream().mapToInt(i -> i).sum();
System.out.println(sum);
//求和
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
System.out.println(intStream.sum());
}
@Test
public void maxTest(){
OptionalInt max = simpleList.stream().mapToInt(i -> i).max();
max.ifPresent(System.out::println);
}
@Test
public void minTest(){
OptionalInt min = new Random().ints(20).min();
min.ifPresent(System.out::println);
}
}