package kgc_byme.day19.test.tt2;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description:
* @author:myh
* @date: 2021/6/4 10:54
*/
public class tes {
public static void main(String[] args) {
ArrayList<Stu> stus = new ArrayList<>();
stus.add(new Stu("张三","135456",89));
stus.add(new Stu("李三","136456",95));
stus.add(new Stu("张四","137456",97));
stus.add(new Stu("王三","138456",78));
//todo统计 上面集合中score的最大值, 最小 平均 总分
// int max = stus.get(0).score;
//
// for (Stu stu : stus) {
// if(stu.name.startsWith("张")&&stu.score>max){
// max=stu.score;
// }
// }
// System.out.println(max);
//用 streanm来实现
// stus.stream().max((o1, o2) -> o1.score - o2.score);
stus.stream().max(Comparator.comparingInt(o -> o.score));
//获取最大的分数:等效于我们上面的那个求最大分数
//map:变化结果,里面的参数是一个Function函数式接口,在scala、spark、flink中均有,而且经常会使用!!
// Optional<Integer> max = stus.stream().map(stu -> stu.score).max((o1, o2) -> o1 - o2);
// System.out.println(max.get());
//获取名字包含三,按照分数降序排列,只获取top2
//filter:过滤,里面是一个Predict预测型接口
//limit():获取前几个
// stus.stream().filter(stu -> stu.name.contains("三"))
// .sorted(Comparator.comparingInt(o -> -o.score))
// .limit(2)
// .forEach(System.out::println);
// .collect(Collectors.toList());
List<Stu> filterList = stus.stream().filter(stu -> stu.name.contains("三"))
.sorted(Comparator.comparingInt(o -> -o.score))
.limit(2)
.collect(Collectors.toList());
//一次性拿得到统计信息
IntSummaryStatistics summaryStatistics = stus.stream().mapToInt(stu -> stu.score)
.map(score -> score + 2)
.summaryStatistics();
System.out.println(summaryStatistics.getMax());
System.out.println(summaryStatistics.getMin());
System.out.println(summaryStatistics.getAverage());
System.out.println(summaryStatistics.toString());
}
}
class Stu {
String name;
String phoneNo;
int score; //做一些数据统计,
public Stu(String name, String phoneNo, int score) {
this.name = name;
this.phoneNo = phoneNo;
this.score = score;
}
public Stu() {
}
@Override
public String toString() {
return "Stu{" +
"name='" + name + '\'' +
", phoneNo='" + phoneNo + '\'' +
", score='" + score + '\'' +
'}';
}
}