import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Student> studentList = new ArrayList<>(); studentList.add(new Student(1,2,1000,88));
studentList.add(new Student(2,2,1000,76));
studentList.add(new Student(3,1,2000,79));
studentList.add(new Student(4,2,3000,88));
studentList.add(new Student(5,2,3000,49));
studentList.add(new Student(5,1,4000,69));
studentList.add(new Student(5,1,4000,96));
// 按照班级分组,性别为女,分数降序 Map<String, List<Student>> groupList = new HashMap<String, List<Student>>(); studentList.stream().filter(student ->
student.getSex() == 2
).collect(Collectors.groupingBy(Student::getClassNo,
Collectors.toList())).forEach(
(classNo, listByClassNo) -> {
groupList.put(classNo + "",
listByClassNo.stream().sorted(Comparator.comparing(Student::getScore).reversed()).collect(Collectors.toList()));
} ); System.out.println("Hello World!");
} private static class Student implements Serializable { private int id; private int sex; private int classNo; private int score; public Student(int id, int sex, int classNo, int score) { this.id = id; this.sex = sex; this.classNo = classNo; this.score = score; } public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public int getSex() {
return sex;
} public void setSex(int sex) {
this.sex = sex;
} public int getClassNo() {
return classNo;
} public void setClassNo(int classNo) {
this.classNo = classNo;
} public int getScore() {
return score;
} public void setScore(int score) {
this.score = score;
}
} }

关于JDK8中stream的用法小总结。的更多相关文章

  1. JDK8中Stream使用解析

    JDK8中Stream使用解析 现在谈及JDK8的新特新,已经说不上新了.本篇介绍的就是Stream和Lambda,说的Stream可不是JDK中的IO流,这里的Stream指的是处理集合的抽象概念『 ...

  2. Jdk8中Stream流的使用,让你脱离for循环

    学习要求: 知道一点儿函数式接口和Lambda表达式的基础知识,有利于更好的学习. 1.先体验一下Stream的好处 需求:给你一个ArrayList用来保存学生的成绩,让你打印出其中大于60的成绩. ...

  3. jdk8中的stream

    https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/ Java 8 中的 Streams API 详解 Streams 的背景 ...

  4. forEach与jdk8中的lambda, Stream

    增强for循环 :forEach 反编译后可以看到实际使用的仍然是Iterator+while遍历的 forEach的优点是写法简单,缺点是不能使用xxx.remove(e)或者iter.remove ...

  5. java stream中Collectors的用法

    目录 简介 Collectors.toList() Collectors.toSet() Collectors.toCollection() Collectors.toMap() Collectors ...

  6. 【JDK8】JDK 8 中Stream流中的去重的方法

    JDK 8 中Stream流中去重的方法 1.简单的去重,可以使用distinct()方法去重,该方法是通过比较equals和hashcode值去去重, 2.复杂的去重, 例如,在一个JavaBean ...

  7. 13万字详细分析JDK中Stream的实现原理

    前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的).Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性( ...

  8. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  9. [转]Linux中find常见用法示例

    Linux中find常见用法示例[转]·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参 ...

随机推荐

  1. .netcore 定制化项目开发的思考和实现

    今年年初进了一家新公司,进入之后一边维护老项目一边了解项目流程,为了接下来的项目重做积累点经验. 先说下老项目吧,.net fx 3.5+oracle...... 在实际维护中逐渐发现,老项目有标准版 ...

  2. Linux使用netstat查看网络状态

    查看本机的网络状态.使用netstat查看网络状态.显示系统端口使用情况.UDP类型的端口.TCP类型的端口.只显示所有监听端口.只显示所有监听tcp端口. 命令使用举例 命令 说明 netstat ...

  3. 金融任务实例实时、离线跑批Apache DolphinScheduler在新网银行的三大场景与五大优化

    在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数.为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战.如今,新网银行多 ...

  4. 用VS Code搞Qt6:至简窗口部件——QWidget

    在正题开始之前,老周照例扯点别的.嗯,咱们扯一下在 VS 2022 下结合 CMake 开发 Qt6 时的环境变量设置问题.在VS Code 中,通够通过 CMake Tools 扩展的配置来设置环境 ...

  5. Debezium的基本使用(以MySQL为例)

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 一.Debezium介绍 摘自官网: Debeziu ...

  6. [CF1498D] Bananas in a Microwave (DP)

    题面&翻译 题解 虽然 m m m 很大,但是 n n n 很小,因此题目允许我们在 O ( n m ) O(nm) O(nm) 以内解决这道题. 定义一个 dp[i][j]=0/1 ? 如果 ...

  7. 【java】基础1-字符串、堆、栈、静态与引用类型

    /*结论:1,一般变量(int,float,boolean..)使用==比较,引用类型(String,int[],对象)使用equals比较.2,一般的变量存放在栈中,new出来的对象都存放在堆中,字 ...

  8. Dapr中国社区活动之 分布式运行时开发者日 (2022.09.03)

    自2019年10月首次发布以来,Dapr(Distributed Application Runtime,分布式应用运行时)因其"更稳定"."更可靠".&quo ...

  9. Javaweb___Ajax和Json

    今日内容 1. AJAX: 2. JSON AJAX: 1. 概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML 1. 异步和同步:客户端和 ...

  10. 第二十二篇:有关插槽solt的使用

    1.什么是插槽? 插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示, 父组件可以在这个占位符中填充任何模板代码,如 HTML.组件等,填充的内 ...