Stream操作流 练习
基础数据:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;
static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();}public static void test1(){users.add(new User("诺手",21,"男","北京",1200));users.add(new User("佛爷个",21,"男","北京",2100));users.add(new User("刀妹",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("压缩",21,"男","苏州",2800));users.add(new User("马儿扎哈",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}
}练习一 : 根据城市分组,代码如下:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;
static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test2{}}public static void test1(){users.add(new User("诺手",21,"男","北京",1200));users.add(new User("佛爷个",21,"男","北京",2100));users.add(new User("刀妹",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("压缩",21,"男","苏州",2800));users.add(new User("马儿扎哈",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}//根据城市分组public static void test2(){Map<String,List<User>> collect=users.stream().collect(Collectors.groupingBy(User::getCity));collect.forEach((k,v)->{System.out.println("城市名:"+k);System.out.println(v);});}
}运行结果如下:

练习二:列出每个城市的最有钱的
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;
static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test4 () }public static void test1(){users.add(new User("诺手",21,"男","北京",1200));users.add(new User("佛爷个",21,"男","北京",2100));users.add(new User("刀妹",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("压缩",21,"男","苏州",2800));users.add(new User("马儿扎哈",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}//列出每个城市的最有钱的public static void test4(){Map<String, Optional<User>> collect=users.stream().collect(Collectors.groupingBy(User::getCity,Collectors.maxBy(Comparator.comparingInt(User::getMoney))));collect.forEach((k,v)->{System.out.println("地区:"+k);System.out.println("冠军是:"+v);});};
}运行结果:

练习三根据性别分组:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;
static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test3()}public static void test1(){users.add(new User("诺手",21,"男","北京",1200));users.add(new User("佛爷个",21,"男","北京",2100));users.add(new User("刀妹",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("压缩",21,"男","苏州",2800));users.add(new User("马儿扎哈",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}public static void test3(){Map<String,List<User>> collect=users.stream().collect(Collectors.groupingBy(User::getSex));collect.forEach((k,v)->{System.out.println("性别:"+k);System.out.println(v);});}
}结果如下

练习四 :求每个城市的总金额
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test5();}public static void test1(){users.add(new User("京爷1",21,"男","北京",1200));users.add(new User("京爷2",21,"男","北京",2100));users.add(new User("海哥1",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("苏姐1",21,"男","苏州",2800));users.add(new User("苏姐2",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}//求每个城市的销售总金额spublic static void test5(){Map<String,Integer> map = users.stream().collect(Collectors.groupingBy(User::getCity,Collectors.summingInt(User::getMoney)));map.forEach((k,v)->{System.out.println("城市:"+k);System.out.println("销售总额:"+v);});}
}结果

练习六; 年龄大于28岁的
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test4();}public static void test1(){users.add(new User("京爷1",21,"男","北京",1200));users.add(new User("京爷2",21,"男","北京",2100));users.add(new User("海哥1",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("苏姐1",21,"男","苏州",2800));users.add(new User("苏姐2",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}//过滤年领大于28的员工public static void test7(){List<User> collect = users.stream().filter(s -> s.getAge() > 28).collect(Collectors.toList());System.out.println(collect);}
}结果如下:

练习八:根据moey给所有人排序
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test10();}public static void test1(){users.add(new User("京爷1",21,"男","北京",1200));users.add(new User("京爷2",21,"男","北京",2100));users.add(new User("海哥1",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("苏姐1",21,"男","苏州",2800));users.add(new User("苏姐2",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}//全国根据销售金额排序public static void test10(){users.sort(Comparator.comparing(User::getMoney).reversed());int i=0;//遍历输出for(User user : users){i++;System.out.println("第"+i+"名:"+user);}
}结果如下:

练习九,计算每人平均money
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test10();}public static void test1(){users.add(new User("京爷1",21,"男","北京",1200));users.add(new User("京爷2",21,"男","北京",2100));users.add(new User("海哥1",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("苏姐1",21,"男","苏州",2800));users.add(new User("苏姐2",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}//人均销售金额public static void test9(){double asDouble = users.stream().mapToDouble(User::getMoney).average().getAsDouble();System.out.println(asDouble);}
}
练习十:总共有多少个不同的城市?
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String name;private int age;private String sex;private String city;private Integer money;static List<User> users = new ArrayList<>();public static void main(String[] args) {test1();test10();}public static void test1(){users.add(new User("京爷1",21,"男","北京",1200));users.add(new User("京爷2",21,"男","北京",2100));users.add(new User("海哥1",23,"女","上海",3200));users.add(new User("海哥2",30,"女","上海",2600));users.add(new User("苏姐1",21,"男","苏州",2800));users.add(new User("苏姐2",21,"男","苏州",1500));users.add(new User("螳螂",30,"女","杭州",2560));users.add(new User("狮子狗",21,"男","杭州",2780));users.add(new User("赵信",21,"男","成都",1890));}public static void testi(){List<String> collect = users.stream().map(User::getCity).distinct().collect(Collectors.toList());int size = collect.size();System.out.println("总共有"+size+"个城市,它们是:"+collect);}
}结果如下:

练习本章代码需要额外的lombok包依赖文件,加载到pomwen文件中
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.24</version>
</dependency>
相关文章:
Stream操作流 练习
基础数据:Data AllArgsConstructor NoArgsConstructor public class User {private String name;private int age;private String sex;private String city;private Integer money; static List<User> users new ArrayList<>();public static void m…...
【模拟集成电路】宽摆幅压控振荡器(VCO)设计
鉴频鉴相器设计(Phase Frequency Detector,PFD)前言一、VCO工作原理二、VCO电路设计VCO原理图三、压控振荡器(VCO)测试VCO测试电路图瞬态测试(1)瞬态输出(2)局部放大图&a…...
《英雄编程体验课》第 13 课 | 双指针
文章目录 零、写在前面一、最长不重复子串1、初步分析2、朴素算法3、优化算法二、双指针1、算法定义2、算法描述3、条件1)单调性2)时效性三、双指针的应用1、前缀和问题2、哈希问题3、K 大数问题零、写在前面 该章节节选自 《夜深人静写算法》,主要讲解最基础的枚举算法 ——…...
DS期末复习卷(十)
一、选择题(24分) 1.下列程序段的时间复杂度为( A )。 i0,s0; while (s<n) {ssi;i;} (A) O(n^1/2) (B) O(n ^1/3) © O(n) (D) O(n ^2) 12…xn xn^1/2 2.设某链表中最常用的…...
QT+OpenGL模板测试和混合
QTOpenGL模板测试和混合 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 模板测试 当片段着色器处理完一个片段之后,模板测试会开始执行。和深度测试一样,它可能会丢弃片段&am…...
《英雄编程体验课》第 11 课 | 前缀和
文章目录 零、写在前面一、概念定义1、部分和2、朴素做法3、前缀和4、前缀和的边界值5、边界处理6、再看部分和二、题目描述1、定义2、求解三、算法详解四、源码剖析五、推荐专栏六、习题练习零、写在前面 该章节节选自 《算法零基础100讲》,主要讲解最基础的算法 —— 前缀和…...
Java学习--多线程2
2.线程同步 2.1卖票【应用】 案例需求 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票 实现步骤 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:privat…...
【Virtualization】Windows11安装VMware Workstation后异常处置
安装环境 Windows 11 专业版 22H2 build 22621.1265 VMware Workstation 17 Pro 17.0.0 build-20800274 存在问题 原因分析 1、BIOS未开启虚拟化。 2、操作系统启用的虚拟化与Workstation冲突。 3、操作系统启用内核隔离-内存完整性保护。 处置思路 1、打开“资源管理器”…...
第四章.神经网络—BP神经网络
第四章.神经网络 4.3 BP神经网络 BP神经网络(误差反向传播算法)是整个人工神经网络体系中的精华,广泛应用于分类识别,逼近,回归,压缩等领域,在实际应用中,大约80%的神经网络模型都采用BP网络或BP网络的变化…...
如何压缩RAR格式文件?
RAR是我们日常生活工作中经常用到的压缩文件格式之一,那么RAR文件如何压缩呢? 不管压缩哪种格式的压缩文件,我们都需要用到压缩软件。针对RAR格式,我们可以选择最常见的WinRAR,当然如果有同样适用于RAR格式的压缩软件…...
JS 执行机制 详解(附图)
一、JS是单线程JS语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是JS这门脚本语言诞生的使命所致——用来处理页面中用户的交互,以及操作DOM而诞生的。单线程就意味着,所有任务需要排队,前一个任务结束…...
华为OD机试真题Java实现【 计算面积】真题+解题思路+代码(20222023)
计算面积 绘图机器的绘图笔初始位i在原点(0.0)。 机器启动后其绘图笔按下面规则绘制直线: 1 )尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E, 2 )期间可通过指令在纵坐标轴方向进行偏移。井同时绘制直线,偏移后按规则1绘制直线;指令的格式为X offsetY。表示在横坐标X…...
【JVM】运行时数据区与对象的创建流程
4、运行时数据区 4.1、运行时数据区介绍 运行时数据区也就是JVM在运⾏时产生的数据存放的区域,这块区域就是JVM的内存区域,也称为JVM的内存模型——JMM 堆空间(线程共享):存放new出来的对象 元空间(线程共…...
flutter- JSON解析框架使用方法json_serializable
对于目前来说,大部分的API网络请求的通讯内容数据格式都是JSON。JSON返回的都是字符串,假如要取到data里面的id,去直接字符串截取肯定是不行的,要通过一定的方式把它解析成Map或者解析成对象,再去处理它。像一些简单的…...
第十三届蓝桥杯国赛 C++ B 组 J 题——搬砖(AC)
目录1.搬砖1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3.Ac_code1.搬砖 1.题目描述 这天,小明在搬砖。 他一共有 nnn 块砖, 他发现第 iii 砖的重量为 wiw_{i}wi, 价值为 viv_{i}vi 。他突然想从这些 砖中选一些出来从…...
Spring Cloud Nacos源码讲解(十)- Nacos服务端服务发现处理
Nacos集群数据同步 当我们有服务进行注册以后,会写入注册信息同时会触发ClientChangedEvent事件,通过这个事件,就会开始进行Nacos的集群数据同步,当然这其中只有有一个Nacos节点来处理对应的客户端请求,其实这其中…...
C++ 修改程序进程的优先级(Linux,Windows)
文章目录1、Linux1.1 常用命令1.1.1 不占用终端运行和后台运行方式1.1.2 查询进程1.1.3 结束进程1.1.4 优先级命令1.2 C 代码示例1.2.1 代码一1.2.2 代码二2、Windows2.1 简介2.2 函数声明2.3 C 代码示例2.3.1 代码一2.3.2 代码二结语1、Linux 1.1 常用命令 1.1.1 不占用终端…...
同步和异步promise
进程和线程进程(厂房):程序的运行环境线程(工人):进行运算的东西同步和异步同步:一件事干完才去干下一件事,前面的代码不执行,后面的代码也不执行。同步的代码可能会出现…...
CHATGPT是新的“搜索引擎终结者”吗?百度是否慌了
ChatGPT 以其非凡的自然语言处理 (NLP) 能力和清晰的响应风靡全球,有望带来一场重大的技术革命。在不知不觉中,叙事转向了ChatGPT与百度的对决,因为来自OpenAI的智能和健谈的聊天机器人已经慢慢获得了“潜在的百度终结…...
力扣-订单最多的客户
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:586. 订单最多的客户二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
