当前位置: 首页 > news >正文

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操作流 练习

基础数据&#xff1a;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)设计

鉴频鉴相器设计&#xff08;Phase Frequency Detector&#xff0c;PFD&#xff09;前言一、VCO工作原理二、VCO电路设计VCO原理图三、压控振荡器&#xff08;VCO&#xff09;测试VCO测试电路图瞬态测试&#xff08;1&#xff09;瞬态输出&#xff08;2&#xff09;局部放大图&a…...

《英雄编程体验课》第 13 课 | 双指针

文章目录 零、写在前面一、最长不重复子串1、初步分析2、朴素算法3、优化算法二、双指针1、算法定义2、算法描述3、条件1)单调性2)时效性三、双指针的应用1、前缀和问题2、哈希问题3、K 大数问题零、写在前面 该章节节选自 《夜深人静写算法》,主要讲解最基础的枚举算法 ——…...

DS期末复习卷(十)

一、选择题(24分) 1&#xff0e;下列程序段的时间复杂度为&#xff08; A &#xff09;。 i0&#xff0c;s0&#xff1b; while (s<n) {ssi&#xff1b;i&#xff1b;} (A) O(n^1/2) (B) O(n ^1/3) © O(n) (D) O(n ^2) 12…xn xn^1/2 2&#xff0e;设某链表中最常用的…...

QT+OpenGL模板测试和混合

QTOpenGL模板测试和混合 本篇完整工程见gitee:QtOpenGL 对应点的tag&#xff0c;由turbolove提供技术支持&#xff0c;您可以关注博主或者私信博主 模板测试 当片段着色器处理完一个片段之后&#xff0c;模板测试会开始执行。和深度测试一样&#xff0c;它可能会丢弃片段&am…...

《英雄编程体验课》第 11 课 | 前缀和

文章目录 零、写在前面一、概念定义1、部分和2、朴素做法3、前缀和4、前缀和的边界值5、边界处理6、再看部分和二、题目描述1、定义2、求解三、算法详解四、源码剖析五、推荐专栏六、习题练习零、写在前面 该章节节选自 《算法零基础100讲》,主要讲解最基础的算法 —— 前缀和…...

Java学习--多线程2

2.线程同步 2.1卖票【应用】 案例需求 某电影院目前正在上映国产大片&#xff0c;共有100张票&#xff0c;而它有3个窗口卖票&#xff0c;请设计一个程序模拟该电影院卖票 实现步骤 定义一个类SellTicket实现Runnable接口&#xff0c;里面定义一个成员变量&#xff1a;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神经网络(误差反向传播算法)是整个人工神经网络体系中的精华&#xff0c;广泛应用于分类识别&#xff0c;逼近&#xff0c;回归&#xff0c;压缩等领域&#xff0c;在实际应用中&#xff0c;大约80%的神经网络模型都采用BP网络或BP网络的变化…...

如何压缩RAR格式文件?

RAR是我们日常生活工作中经常用到的压缩文件格式之一&#xff0c;那么RAR文件如何压缩呢&#xff1f; 不管压缩哪种格式的压缩文件&#xff0c;我们都需要用到压缩软件。针对RAR格式&#xff0c;我们可以选择最常见的WinRAR&#xff0c;当然如果有同样适用于RAR格式的压缩软件…...

JS 执行机制 详解(附图)

一、JS是单线程JS语言的一大特点就是单线程&#xff0c;也就是说&#xff0c;同一个时间只能做一件事。这是JS这门脚本语言诞生的使命所致——用来处理页面中用户的交互&#xff0c;以及操作DOM而诞生的。单线程就意味着&#xff0c;所有任务需要排队&#xff0c;前一个任务结束…...

华为OD机试真题Java实现【 计算面积】真题+解题思路+代码(20222023)

计算面积 绘图机器的绘图笔初始位i在原点(0.0)。 机器启动后其绘图笔按下面规则绘制直线: 1 )尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E, 2 )期间可通过指令在纵坐标轴方向进行偏移。井同时绘制直线,偏移后按规则1绘制直线;指令的格式为X offsetY。表示在横坐标X…...

【JVM】运行时数据区与对象的创建流程

4、运行时数据区 4.1、运行时数据区介绍 运行时数据区也就是JVM在运⾏时产生的数据存放的区域&#xff0c;这块区域就是JVM的内存区域&#xff0c;也称为JVM的内存模型——JMM 堆空间&#xff08;线程共享&#xff09;&#xff1a;存放new出来的对象 元空间&#xff08;线程共…...

flutter- JSON解析框架使用方法json_serializable

对于目前来说&#xff0c;大部分的API网络请求的通讯内容数据格式都是JSON。JSON返回的都是字符串&#xff0c;假如要取到data里面的id&#xff0c;去直接字符串截取肯定是不行的&#xff0c;要通过一定的方式把它解析成Map或者解析成对象&#xff0c;再去处理它。像一些简单的…...

第十三届蓝桥杯国赛 C++ B 组 J 题——搬砖(AC)

目录1.搬砖1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3.Ac_code1.搬砖 1.题目描述 这天&#xff0c;小明在搬砖。 他一共有 nnn 块砖, 他发现第 iii 砖的重量为 wiw_{i}wi​, 价值为 viv_{i}vi​ 。他突然想从这些 砖中选一些出来从…...

Spring Cloud Nacos源码讲解(十)- Nacos服务端服务发现处理

Nacos集群数据同步 ​ 当我们有服务进行注册以后&#xff0c;会写入注册信息同时会触发ClientChangedEvent事件&#xff0c;通过这个事件&#xff0c;就会开始进行Nacos的集群数据同步&#xff0c;当然这其中只有有一个Nacos节点来处理对应的客户端请求&#xff0c;其实这其中…...

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

进程和线程进程&#xff08;厂房&#xff09;&#xff1a;程序的运行环境线程&#xff08;工人&#xff09;&#xff1a;进行运算的东西同步和异步同步&#xff1a;一件事干完才去干下一件事&#xff0c;前面的代码不执行&#xff0c;后面的代码也不执行。同步的代码可能会出现…...

CHATGPT是新的“搜索引擎终结者”吗?百度是否慌了

ChatGPT 以其非凡的自然语言处理 &#xff08;NLP&#xff09; 能力和清晰的响应风靡全球&#xff0c;有望带来一场重大的技术革命。在不知不觉中&#xff0c;叙事转向了ChatGPT与百度的对决&#xff0c;因为来自OpenAI的智能和健谈的聊天机器人已经慢慢获得了“潜在的百度终结…...

力扣-订单最多的客户

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;586. 订单最多的客户二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...