Java基础(二十)Stream练习

Stream练习

1. 拼接

给定一个字符串数组,使用 Stream 把所有字符串拼接成一个字符串。

import java.util.Arrays;
import java.util.stream.Collectors;public class StringJoinWork01 {public static void main(String[] args) {String[] arr = {"a", "b", "c"};System.out.println(Arrays.stream(arr).collect(Collectors.joining()));  // abcSystem.out.println(String.join("",arr));  // abc}
}

2. 求值

有一个整数集合,分别完成以下操作:

  • 所有元素之和
  • 最大值
  • 最小值
import java.util.Arrays;
import java.util.OptionalInt;public class EvaluationWork02 {public static void main(String[] args) {int[] ints = {2, 3, 4, 5, 10, 2, 1};long count = Arrays.stream(ints).count();  // 计数System.out.println(count);  // 7OptionalInt max = Arrays.stream(ints).max();  // 最大值System.out.println(max.getAsInt());  // 10OptionalInt min = Arrays.stream(ints).min();  // 最小值System.out.println(min.getAsInt());  // 1int sum = Arrays.stream(ints).sum();  // 求和System.out.println(sum);  // 27}
}

3. 薪资最低的员工

有一个员工类Employee,里面有name、age和salary字段。请通过 Stream 对多个Employee对象按salary排序,然后取前3个输出。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class SalaryMinWork03 {public static void main(String[] args) {ArrayList<Employee> employees = new ArrayList<>();employees.add(new Employee("小羊呆呆", 18, 5200.0));employees.add(new Employee("张三", 25, 6000.0));employees.add(new Employee("李四", 30, 8000.0));employees.add(new Employee("王五", 22, 4500.0));employees.add(new Employee("赵六", 28, 7000.0));/*** 方法一*/// 排序employees.sort((user,user1) -> (int) (user.getSalary()-user1.getSalary()));// 翻转Collections.reverse(employees);// 取前3,输出employees.stream().limit(3).forEach(System.out::println);/*** 方法二*/employees.stream().sorted(new Comparator<Employee>() {@Overridepublic int compare(Employee o1, Employee o2) {return (int)((o1.getSalary() - o2.getSalary()) * -1);}}).limit(3).forEach(s -> System.out.println(s));/*** 方案三:优雅!!!*/employees.stream().sorted(Comparator.comparingDouble(Employee::getSalary).reversed()).limit(3).forEach(System.out::println);}
}

4. 平均值

有一个整数集合,求每个元素平方的平均值。

int[] ints = {2, 3, 4, 5, 10, 2, 1};
DoubleStream aDouble = Arrays.stream(ints).mapToDouble(i -> Math.pow(i, 2));
// System.out.println(Arrays.toString(aDouble.toArray()));  // [4.0, 9.0, 16.0, 25.0, 100.0, 4.0, 1.0]
System.out.println(aDouble.average().getAsDouble());  // 22.714285714285715

集合练习

1. 斗地主

有一个集合保存扑克牌的花色(四种),另一个集合保存扑克牌点数(13个)。创建一个新的集合保存所有的扑克牌(54张,包含 大小王)。将扑克牌分为四份(3个玩家,1份底牌),排序后输出四份手牌。

import java.util.*;public class PlayingCardsWork021 {public static void main(String[] args) {List<String> suits = Arrays.asList("♠", "♥", "♦", "♣");  // 花色List<String> ranks = Arrays.asList("2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A");  // 点数List<String> deck = new ArrayList<>();  // 扑克牌// 向扑克牌列表中储存元素for (String suit : suits) {for (String rank : ranks) {String card = suit + rank;deck.add(card);}}deck.add("大王");deck.add("小王");List<String> player1 = new ArrayList<>(); // 玩家一List<String> player2 = new ArrayList<>(); // 玩家二List<String> player3 = new ArrayList<>(); // 玩家三List<String> bottom = new ArrayList<>(); // 底牌shuffle(deck);/*** 发牌*/for (int i = 0; i < deck.size() - 3; i++) {switch (i % 3) {case 0 -> player1.add(deck.get(i));case 1 -> player2.add(deck.get(i));case 2 -> player3.add(deck.get(i));}}// 底牌for (int i = 1; i < 4; i++) {bottom.add(deck.get(deck.size() - i));}Collections.reverse(bottom);  // 翻转,使底牌顺序正确// 定义比较器Comparator<String> cardComparator = (o1, o2) -> {o1 = o1.replaceAll("[♠♥♦♣]", "");o2 = o2.replaceAll("[♠♥♦♣]", "");return ranks.indexOf(o1) - ranks.indexOf(o2);};// 排序,整理手牌player1.sort(cardComparator);player2.sort(cardComparator);player3.sort(cardComparator);// 展示System.out.println("玩家1\t" + player1);System.out.println("玩家2\t" + player2);System.out.println("玩家3\t" + player3);System.out.println("底牌 \t" + bottom);System.out.println(deck);}/*** 洗牌* @param list*/public static void shuffle(List<String> list) {for (int i = 0; i < 3; i++) {// System.currentTimeMillis() 来设置随机种子。每一次运行程序时都会使用不同的随机种子,从而产生更随机的结果。Collections.shuffle(list, new Random(System.currentTimeMillis()));}}
}

2. 生日提醒

编写一个生日提醒程序,使用Map来存储人名和对应的生日日期。够根据日期提醒用户哪些人今天过生日?

  • 如何筛选显示出最近七天过生日的用户
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;public class BirthdayReminderWork022 {public static void main(String[] args) {HashMap<String, LocalDate> brith = new HashMap<>();// 添加人员的生日信息brith.put("张三", LocalDate.of(1990, 5, 20)); // 假设生日为1990年6月20日brith.put("李四", LocalDate.of(1988, 9, 10)); // 假设生日为1988年9月10日brith.put("王五", LocalDate.of(1995, 2, 15)); // 假设生日为1995年3月15日System.out.println(brith);Iterator<Map.Entry<String, LocalDate>> iterator = brith.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, LocalDate> next = iterator.next();int day = next.getValue().getDayOfMonth() - LocalDate.now().getDayOfMonth();boolean isBrith = next.getValue().getMonth().equals(LocalDate.now().getMonth())&& day <= 7;if (isBrith) {System.out.printf("距离%s生日还有%d天\n", next.getKey(), day);}}}
}

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

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

相关文章

IDEA找不到Maven窗口

有时候导入项目或者创建项目时候Maven窗口找不到了 然后指定项目的pom.xml文件

torch.bmm功能解读

bmm 是 batched matrix multiple 的简写&#xff0c;即批量矩阵乘法&#xff0c;矩阵是二维的&#xff0c;加上batch一个维度&#xff0c;因此该函数的输入必须是两个三维的 tensor&#xff0c;三个维度代表的含义分别是&#xff1a;&#xff08;批量&#xff0c;行&#xff0c…

【python手写算法】逻辑回归实现分类(含公式推导)

公式推导&#xff1a; 代码实现&#xff1a; # codingutf-8 import matplotlib.pyplot as plt import numpy as npdef f(w1,x1,w2,x2,b):zw1*x1w2*x2breturn 1/(1np.exp(-z)) if __name__ __main__:X1 [12.46, 0.25, 5.22, 11.3, 6.81, 4.59, 0.66, 14.53, 15.49, 14.43,2.1…

DHCP的interface(接口),global(全局)配置以及DHCP relay(中继),DHCP snooping,DHCP option

目录 1.DHCP的接口&#xff08;interface&#xff09;配置 2.DHCP的全局&#xff08;global&#xff09;配置 3.dhcp relay 4.dhcp snooping 5.option 这里有一个简单的拓扑图 交换机配置命令如下 The device is running!<Huawei> <Huawei>sys Enter system …

Android 动画之插值器PathInterpolator

Android 的View动画、属性动画都可以设置动画插值器&#xff0c;以此来实现不同的动画效果。 这篇文章 Android View动画整理 有介绍各种插值器的效果&#xff0c;这一篇专访 PathInterpolator 。 参考官网 添加曲线动作 &#xff0c; PathInterpolator 基于 贝塞尔曲线 或 …

2023 大学生数学建模竞赛-C题-第一问

题目&#xff1a; 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c;商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销…

vue3.2 导出pdf文件或表格数据

要在Vue 3中导出PDF文件&#xff0c;你可以使用第三方库来处理PDF生成和导出。一个常用的库是jspdf&#xff0c;它允许你在客户端或服务器端生成PDF文档。 以下是在Vue 3中使用jspdf库导出PDF文件的基本步骤&#xff1a; 第一步首先&#xff0c;安装jspdf库。你可以使用npm或ya…

macbook如何通过命令行安装软件

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 通过命令行安装 macOS 上的 .dmg 文件需要进行一些额外的步骤&#xff0c;因为 .dmg 文件通常需要手动挂载和安装。下面以安装git为例。你可以按照以下步骤进行操作&#xff1a; 将下载的 dmg 文件挂载到文件…

玩转Mysql系列 - 第17篇:存储过程自定义函数详解

这是Mysql系列第17篇。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 代码中被[]包含的表示可选&#xff0c;|符号分开的表示可选其一。 需求背景介绍 线上程序有时候出现问题导致数据错误的时候&#xff0c;如果比较紧急&#xff0c;我们可以写一个存储来…

亚马逊鲲鹏系统多渠道引流功能快速增加你的listing流量

如果亚马逊Listing没有流量&#xff0c;那么亚马逊产品排名也会在很靠后的位置&#xff0c;从而就会导致吸引不到客户点击进行下单购买&#xff0c;因此引流就很重要了&#xff0c;普通的引流方法很难达到效果&#xff0c;并且还会花费大量的时间&#xff0c;那么我们可以用亚马…

【postgresql 基础入门】数据库服务的管理,启动、停止、状态查看、配置加载、重启都在这里

数据库服务管理 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff…

JMeter压力测试 5分钟让你学会如何并发压测接口

文章目录 地址下载启动 使用 地址 JMeter官网下载&#xff1a;https://jmeter.apache.org/download_jmeter.cgi 下载 最新款的jmeter需要java8的支持&#xff0c;请自行安装jdk8或以上的版本 根据系统不同系统下载zip或者是tgz格式的压缩包&#xff0c;并解压&#xff0c;博…

企业互联网暴露面未知资产梳理

一、互联网暴露面梳理的重要性 当前&#xff0c;互联网新技术的产生推动着各种网络应用的蓬勃发展&#xff0c;网络安全威胁逐渐蔓延到各种新兴场景中&#xff0c;揭示着网络安全威胁不断加速泛化。当前网络存在着许多资产&#xff0c;这些资产关系到企业内部的安全情况&#…

【Chrome】chrome浏览器未连接到互联网

问题描述 电脑上安装了一个联想电脑管家&#xff0c;进行了一下清理&#xff0c;并优化了一下启动项&#xff0c;Chrome浏览器突然什么网站都无法访问了。以为更新坏了&#xff0c;但相同的网站放到火狐浏览器上&#xff0c;竟然可以打开&#xff0c;怎么回事呢&#xff1f;怎…

报错:axios 发送的接口请求 404

axios 发送的接口请求 404 一、问题二、分析 一、问题 二、分析 axios 发送的接口请求 404&#xff0c;根本没有把接口信息发送到后端&#xff0c;这个时候你可以查看检查一下自己的接口名字&#xff0c;或让后端配合换一个接口名字再发送一次接口请求 或者重启一下电脑 我是…

微调chatGLM-6B大模型的方法

GLM官方的知乎微调教程&#xff1a;https://zhuanlan.zhihu.com/p/618498001 GLM官方的GitHub微调教程&#xff1a;https://github.com/THUDM/ChatGLM-6B/tree/main/ptuning 说这个微调出的模型和原模型是同时加载的&#xff0c;输入文本的时候会先看看微调出的模型有没有存相应…

c++图论免费ppt,简单深度理解图论

本篇博文想分享一个ppt,是帮助大家简单深度理解c图论. 作者承诺&#xff1a;分享的东西没有病毒&#xff0c;是资料。 分享的东西一个是ppt,ppt里面是150页的&#xff0c;里面将带领大家简单深度理解c图论&#xff0c;还有一个就是里面例题的数据&#xff0c;大家可以按照数据…

Android 9.0 pms获取应用列表时过滤掉某些app功能实现

1.前言 在9.0的系统rom定制化开发中,对系统定制的功能也是很多的,在一次产品开发中,要求在第三方app获取应用列表的时候,需要过滤掉某些app,就是不显示在app应用列表中,这就需要在pms查询app列表时过滤掉这些app就可以了,接下来就实现这些功能 2.pms获取应用列表时过滤掉…

Unity 之利用Audio Source(音频源)组件用于播放声音

文章目录 Unity中的Audio Source&#xff08;音频源&#xff09;是一个用于播放声音的组件&#xff0c;通常附加到游戏对象上&#xff0c;以便在游戏中播放音频效果、音乐或对话。以下是Audio Source的详细介绍&#xff1a; 添加Audio Source&#xff1a; 要在Unity中使用Audio…

Qt 5.15集成Crypto++ 8.8.0(MSVC 2019)笔记

一、背景 笔者已介绍过在Qt 5.15.x中使用MinGW&#xff08;8.10版本&#xff09;编译并集成Crypto 8.8.0。 但是该编译出来的库&#xff08;.a和.dll&#xff09;不适用MSVC&#xff08;2019版本&#xff09;构建环境&#xff0c;需要重新编译&#xff08;.lib或和.dll&#xf…