Java 面试笔试题 - Stream 和 Lambda 表达式的使用

请按以下步骤实现代码

  • 创建一个新的 JDK 1.8 项目,能运行 main 方法即可

  • 新建一个 Record 类,类中包含以下属性 level, teacher, student

  • 构建一个 List 集合,集合中包含 8 个 Record 对象, Record 对象包含以下属性:
    Level(年级),Teacher(老师姓名),Student(学生姓名)

    每个对象的属性值如下:

LevelTeacherStudent
L1LiS1
L1WangS2
L1WangS3
L2LiS4
L2LiS5
L2WangS6
L3WangS7
L3WangS8

然后实现以下数据统计,要求使用 Java 8 的 Stream 和 Lambda 表达式

  • 使用 Stream 集合操作统计每个年级有多少名学生,打印在输出窗口即可,输出效果:
    {L1=3, L2=3, L3=2}

  • 使用 filter 方法进行过滤,列出老师 Li 的所有学生姓名,输出效果:
    {Li=[S1, S4, S5]}

  • 列出每个老师,每个年级的学生数量,输出效果:
    {Wang={L1=2, L2=1, L3=2}, Li={L1=1, L2=2}}

可参考 Java 文档:https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html

答案

新建一个 TestRecord 类,把以下代码赋值复制进入

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;public class TestRecord {public static void main(String[] args) {List<Record> list = new ArrayList<>();list.add(new Record("L1", "Li", "S1"));list.add(new Record("L1", "Wang", "S2"));list.add(new Record("L1", "Wang", "S3"));list.add(new Record("L2", "Li", "S4"));list.add(new Record("L2", "Li", "S5"));list.add(new Record("L2", "Wang", "S6"));list.add(new Record("L3", "Wang", "S7"));list.add(new Record("L3", "Wang", "S8"));// 使用 Stream 集合操作统计每个年级有多少名学生,打印在输出窗口即可,输出效果:  {L1=3, L2=3, L3=2}Map<String, Long> record1 = list.stream().collect(Collectors.groupingBy(Record::getLevel, Collectors.counting()));System.out.println(record1);// 使用 filter 方法进行过滤,列出老师 Li 的所有学生姓名,输出效果:  {Li=[S1, S4, S5]}Map<String, List<String>> result = list.stream().filter(record -> "Li".equals(record.getTeacher())).collect(Collectors.groupingBy(Record::getTeacher, Collectors.mapping(Record::getStudent, Collectors.toList())));System.out.println(result);// 列出每个老师,每个年级的学生数量Map<String,Map<String,Long>> collect = list.stream().collect(Collectors.groupingBy(Record::getTeacher,Collectors.groupingBy(Record::getLevel,Collectors.counting())));System.out.println(collect);}
}class Record {private String level;private String teacher;private String student;public Record() {}public Record(String level, String teacher, String student) {this.level = level;this.teacher = teacher;this.student = student;}public String getLevel() {return level;}public void setLevel(String level) {this.level = level;}public String getTeacher() {return teacher;}public void setTeacher(String teacher) {this.teacher = teacher;}public String getStudent() {return student;}public void setStudent(String student) {this.student = student;}@Overridepublic String toString() {return "Record{" +"level='" + level + '\'' +", teacher='" + teacher + '\'' +", student='" + student + '\'' +'}';}
}

结果

{L1=3, L2=3, L3=2}
{Li=[S1, S4, S5]}
{Wang={L1=2, L2=1, L3=2}, Li={L1=1, L2=2}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【新版Hi3521DV200处理器性能】

新版Hi3521DV200处理器性能 Hi3521DV200是针对多路高清/超高清&#xff08;1080p/4M/5M/4K&#xff09;DVR产品应用开发的新一代专业SoC芯片。Hi3521DV200集成了ARM Cortex-A7四核处理器和性能强大的神经网络推理引擎&#xff0c;支持多种智能算法应用。同时&#xff0c;Hi352…

类和对象 02【C++】

文章目录 一、 构造函数(初始化列表)1. 初始化列表2. explicit 关键字3. static成员 二、 友元1. 友元函数2.友元类 三、 内部函数四、 匿名对象五、 拷贝对象时的一些编译器优化 一、 构造函数(初始化列表) 进一步理解构造函数&#xff0c;我们知道创建对象时&#xff0c;编译…

手把手教会你 - StreamAPI基本用法

1. 简介 目前响应式编程的学习中很多时候都用到了Lambda表达式和StreamAPI&#xff0c;那么今天就在这里记录一下一些最基本的使用方法。 StreamAPI中引入了流的概念&#xff0c;其将集合看作一种流&#xff0c;流在管道中传输&#xff08;动态的&#xff09;&#xff0c;可以…

IDEA构建Maven JavaSE工程的全面指南

IDEA构建Maven JavaSE工程的全面指南 一、引言 在现代Java开发中&#xff0c;Maven已经成为了一个不可或缺的工具&#xff0c;它帮助我们管理项目的依赖、构建、文档、报告等。而IntelliJ IDEA&#xff08;简称IDEA&#xff09;则是一款强大的Java集成开发环境&#xff08;ID…

AI助力剧本创作:如何5分钟内构思出热门短剧大纲

人工智能重塑短剧行业&#xff1a;从剧本创作到市场推广 在当今短剧行业的飞速发展中&#xff0c;剧本创作的质量及其更新的速度已然成为短剧能否转化为热门作品的关键性因素。然而&#xff0c;随着短剧创作成本的日益攀升&#xff0c;一个卓越的剧本无论在创作时间上还是在构思…

【JAVA重要知识 | 第六篇】Java集合类使用总结(List、Set、Map接口及常见实现类)以及常见面试题

文章目录 6.Java集合类使用总结6.1概览6.1.1集合接口类特性6.1.2List接口和Set接口的区别6.1.3简要介绍&#xff08;1&#xff09;List接口&#xff08;2&#xff09;Set接口&#xff08;3&#xff09;Map接口 6.2Collection接口6.3List接口6.3.1ArrayList6.3.2LinkedList—不常…

2023年第三届中国高校大数据挑战赛(第二场)B题思路

竞赛时间 &#xff08;1&#xff09;报名时间&#xff1a;即日起至2024年3月8日 &#xff08;2&#xff09;比赛时间&#xff1a;2024年3月9日8:00至2024年3月12日20:00 &#xff08;3&#xff09;成绩公布&#xff1a;2024年4月30日前 赛题方向&#xff1a;文本或图象分析方…

5.51 BCC工具之slabratetop.py解读

一,工具简介 slabratetop工具以类似于 top 命令的实时刷新显示方式,展示从内核内存分配缓存(SLAB 或 SLUB)中的分配速率和总字节数。例如: (注:SLAB 和 SLUB 是 Linux 内核中用于内存管理的两种不同机制,它们都提供了一种方式来缓存和管理小对象的内存分配。) 二,…

学生信息管理APP

设计内容简介 本次设计使用Android Studio实现一个学生信息管理系统,系统功能结构如下图所示: 详细设计 数据库设计SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低。…

143:vue+leaflet 在25833投影坐标下,加载一小块图像叠层数据

第143个 点击查看专栏目录 本示例是介绍如何在vue+leaflet, 自定义CRS,形成新的投影,这里是25833投影,并使用 L.Proj.imageOverlay的方法在地图上加载载一小块图像叠层数据。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式…

Python爬虫——Scrapy-1

目录 简介 安装 基本使用 1. 创建爬虫的项目 2. 创建爬虫文件 3. 运行爬虫代码 scrapy项目组成 scrapy工作原理 ​编辑 58同城 scrapy架构组成 汽车之家 总结 简介 Scrapy 是一个基于 Python 的开源网络爬虫框架&#xff0c;它可以帮助开发者快速、高效地构…

js 实现点击按钮小球加入购物车动画

本文旨在实现类似点击按钮实现小球加入购物车效果。 使用技术&#xff1a; Vue2使用 Pubsub 监听按钮点击事件&#xff08;如果不想用也可以自己改造下&#xff09;监听 onmousemove 来获取按钮点击时的鼠标位置 小球组件&#xff1a; html css&#xff1a; 小球父元素&am…

【新国标送检】

新国标送检 ■ 设备型号差异性检测■■■■ ■ 设备型号差异性检测 TMS-21&#xff0c;TMS-23&#xff0c; TMS-25 各个型号都送一台过去做差异性检测。 ■ ■ ■ ■

机器学习 | 使用CatBoost处理缺失值

数据是任何分析或机器学习的基础。然而&#xff0c;现实世界的数据集并不完美&#xff0c;它们经常包含缺失值&#xff0c;这可能导致任何算法的训练阶段出现错误。处理缺失值至关重要&#xff0c;因为它们可能会导致数据分析和机器学习模型中出现偏差或不准确的结果。处理缺失…

C语言 goto 语句的基本格式是什么?如何使⽤?

一、问题 goto 语句为⽆条件转向语句&#xff0c;它可以使程序⽴即跳转到函数内部的任意⼀条可执⾏语句&#xff0c;这样使⽤起来⽐较灵活。那么&#xff0c;该语句的基本格式是什么&#xff1f;又该如何使⽤呢&#xff1f; 二、解答 1. goto 语句的基本格式 goto 关键字后⾯…

每日五道java面试题之springMVC篇(一)

目录&#xff1a; 第一题. 什么是Spring MVC&#xff1f;简单介绍下你对Spring MVC的理解&#xff1f;第二题. Spring MVC的优点第三题. Spring MVC的主要组件&#xff1f;第四题. 什么是DispatcherServlet?第五题. 什么是Spring MVC框架的控制器&#xff1f; 第一题. 什么是S…

子查询与连表查询

子查询与连表查询 标签:数据库 子查询 mysql> explain select e.empno,e.ename,(select dname from dept d where e.deptno d.deptno) as dname from emp e where e.deptno 1; -------------------------------------------------------------------------------------…

中间件 | Redis - [big-key hot-key]

INDEX 1 big-keyhot-key 1 big-key 分类 字符串型 big-key&#xff1a;字符串最大可以到 512M集合型 big-key&#xff1a;集合个数可以到 2^23 问题 内存空间不均匀指令耗时增加&#xff1a;redis 是单线程的&#xff0c;部分操作的时间复杂度是 O(n) 的&#xff0c;big-ke…

Java后端 - 一面凉经 - 得物(国际电商)

招聘流程&#xff1a; 2024.1.5 HR邮件沟通 2024.1.7 上午面试 面试流程&#xff1a; 简单自我介绍 简单问实习工作 介绍目前Java项目 如何在项目中处理并发问题 讲讲并发编程 如何使用锁 问什么like查询慢 explain具体讲讲 加索引为什么会变快 索引是什么数据结构…

python-批量操作excel

批量新增excel文件 import osimport xlwings as xwapp xw.App(visibleTrue,add_bookFalse)#visible设置为ture的时候会自动打开创建的excel文件&#xff0c;设为为false的时候不会看到excel文件打开了&#xff0c;实际进程占用了....dept_list [人事部,财务部,研发部,行政部…