700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java 高级8- Stream数据流(分页 筛选 排序 分组 求和)

Java 高级8- Stream数据流(分页 筛选 排序 分组 求和)

时间:2021-11-04 13:54:13

相关推荐

Java 高级8- Stream数据流(分页 筛选 排序 分组 求和)

1、Stream基础操作

一个 Stream 只可以使用一次;

stream has already been operated upon or closed,只能使用一次

功能:

(1)分页与基础操作;

List<String> queue = new LinkedList<>();Collections.addAll(queue,"1","2","gy","hr","PIGE","ge","goole");//获得Stream接口对象Stream<String> stream = queue.stream();//输出元素个数//stream has already been operated upon or closed,只能使用一次//System.out.println(stream.count());//1、内容全部转小写,筛选是否包含字母g的集合//List<String> list = stream.filter(e -> e.toLowerCase(Locale.ROOT).contains("g")).collect(Collectors.toList());//2、分页:跳过两个skip(2),取一个limit(1);List<String> list = stream.filter(e -> e.toLowerCase(Locale.ROOT).contains("g")).skip(2).limit(1).collect(Collectors.toList());System.out.println(list); //[ge]

(2)筛选

选择二班的男生(多条件筛选)

List<Student> students = studentList.stream().filter(s -> (s.getSex() == 0 && s.getClassNo() == 2)).collect(Collectors.toList());

(3)排序

按照学生年龄升序排序(单条件排序)

List<Student> students = studentList.stream().sorted(paring(Student::getAge)).collect(Collectors.toList());

按照学生年龄与班级排序(多条件排序)

List<Student> students = studentList.stream().sorted(paring(Student::getAge).thenComparing(Student::getClassNo)).collect(Collectors.toList());

按照学生年降序排序(reversed)

List<Student> students = studentList.stream().sorted(paring(Student::getAge).reversed()).collect(Collectors.toList());

(4)分组

按照班级分组

//按照班级进行分组Map<Integer, List<Student>> classMap = studentList.stream().collect(Collectors.groupingBy(Student::getClassNo));结果是map:key: 1 value:[{classNo:1,name:"张三",age:12},{classNo:1,name:"李四",age:13}]key: 2 value:[{classNo:2,name:"王五",age:12},{classNo:1,name:"贼六",age:11}]key: 3 value:[{classNo:3,name:"对七",age:12}]

(5) 求和

计算分数之和

BigDecimal score= studentList.setScore(studentList.stream().map(studentList::getScore).reduce(BigDecimal.ZERO, BigDecimal::add));

2、MapReduce基础模型

MapReduce是一种计算模型,它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务。每个MapReduce工作由两个阶段组成:Map;Reduce。

Map处理数据

Reduce分析数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。