Java基础第8天总结(map遍历、Stream流)

  • 选中一部分代码,然后CTRL+ALT+T,可以在外面套上while循环,try..catch之类的
  • 小案例:电影信息管理模块:用户可以上架、查询、下架、下架某个主演参演的电影
package Demo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Movie {private String name;private double score;private String actor;private double price;
}
package Demo;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class MovieService {private static List< Movie> movies = new ArrayList<>();private static Scanner sc = new Scanner(System.in);public void start() {while (true) {//选中一块区域,然后CTRL+ALT+TSystem.out.println("===电影信息操作系统===");System.out.println("1、上架");System.out.println("2、下架");System.out.println("3、查询某个电影");System.out.println("4、封杀某个明星");System.out.println("5、退出");System.out.println("请您输入操作命令:");int command = sc.nextInt();switch (command) {case 1:addMovie();break;case 2://removeMovie();break;case 3:searchMovie();break;case 4:banStar();break;case 5:System.out.println("退出成功!!");return;default:System.out.println("输入的命令有误!");}}}private void banStar() {System.out.println("====封杀明星====");System.out.println("请输入要封杀的明星:");String star = sc.next();for (int i = 0; i < movies.size(); i++) {Movie movie = movies.get(i);if (movie.getActor().contains(star)) {movies.remove(movie);System.out.println("封杀成功!");i--;}}}private void searchMovie() {System.out.println("====查询电影====");System.out.println("请输入要查询的电影名称:");String name = sc.next();Movie movie = searchMovieByName(name);if (movie != null) {System.out.println(movie);}else{System.out.println("没有找到该电影!");}}//根据电影名字查询电影对象返回public Movie searchMovieByName(String name) {for (Movie movie : movies) {if (movie.getName().equals(name)) {return movie;}}return null;}private void addMovie() {System.out.println("====上架电影====");//1、创建电影对象,封装这部电影信息Movie movie = new Movie();//2、给电影对象注入数据System.out.println("请输入电影名称:");movie.setName(sc.next());System.out.println("请输入电影评分:");movie.setScore(sc.nextDouble());System.out.println("请输入主演:");movie.setActor(sc.next());System.out.println("请输入价格:");movie.setPrice(sc.nextDouble());//3、将电影对象添加到集合中movies.add(movie);System.out.println("上架成功");}
}
package Demo;public class Test {public static void main(String[] args) {//1、创建电影对象:定义电影类//2、创建一个电影操作对象:专门负责对电影数据进行业务处理MovieService movieService = new MovieService();movieService.start();}
}


  • Map集合的三种遍历方式:
package Demo;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapTest {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("张三", 18);map.put("李四", 19);map.put("王五", 20);System.out.println(map);System.out.println("------------------");//1、将map集合的全部键放到set集合中Set<String> keys = map.keySet();for (String key : keys) {Integer value = map.get(key);System.out.println(key + "=" + value);}System.out.println("------------------");//2、把map集合转换成set集合,里面的元素类型都是键值对类型(Map.Entry<String,Integer>)Set<Map.Entry<String, Integer>> entries = map.entrySet();//快捷键:map.entrySet().var+回车for (Map.Entry<String, Integer> entry : entries) {//快捷键:entries.for+回车String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + "=" + value);}System.out.println("------------------");//3、直接调用map集合的forEach方法遍历map.forEach((key,value)->{System.out.println(key + "=" + value);});}
}


  • Stream流
  • 小案例:找到以“张”开头,并且是三个字的元素,存储到一个新集合
package Demo;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;public class StreamDemo {public static void main(String[] args) {//找到以“张”开头,并且是三个字的元素,存储到一个新集合List<String> list = new ArrayList<>();list.add("张无忌");list.add("周芷若");list.add("赵敏");list.add("张强");list.add("张三丰");list.add("张小四");//法一:传统方法:找出姓张,名字三个字的,存入新集合中List<String> newList = new ArrayList<>();for (String name : list) {if (name.startsWith("张") && name.length() == 3) {newList.add(name);}}System.out.println(newList);System.out.println("-----------------");//法二:使用Stream流List<String> newList2 = list.stream().filter(name -> name.startsWith("张")).filter(name -> name.length() == 3).collect(Collectors.toList());System.out.println(newList2);}
}
  • 获取Stream流的方式

package Demo;import java.util.*;
import java.util.stream.Stream;public class StreamDemo {public static void main(String[] args) {//获取Stream流的方式//1、获取集合的Stream流:调用集合提供的stream()方法Collection<String> list = new ArrayList<>();Stream<String> s1 = list.stream();//快捷键:list.stream().var+回车//2、Map集合,怎么去拿Stream流Map<String,Integer> map = new HashMap<>();//获取键流Stream<String> s2 = map.keySet().stream();//获取值流Stream<Integer> s3 = map.values().stream();//获取键值对流Stream<Map.Entry<String,Integer>> s4 = map.entrySet().stream();//3、数组,获取数组的Stream流String[] arr = {"张三","李四","王五"};Stream<String> s5 = Arrays.stream(arr);Stream<String> s6 = Stream.of(arr);Stream<String> s7 = Stream.of("张三","李四","王五");}
}
  • Stream提供的常用的中间方法,对流上的数据进行处理(返回新流,支持链式编程)

package Demo;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;public class StreamDemo {public static void main(String[] args) {//掌握Stream提供的常用的中间方法,对流上的数据进行处理(返回新流,支持链式编程)List<String> list = new ArrayList<>();list.add("张无忌");list.add("周芷若");list.add("赵敏");list.add("张强");list.add("张三丰");list.add("张小四");//1、过滤方法list.stream().filter(s -> s.startsWith("张")&&s.length()==3).forEach(s -> System.out.println(s));System.out.println("--------------------------------");//2、排序方法List<Double> scores = new ArrayList<>();scores.add(99.9);scores.add(66.6);scores.add(66.6);scores.add(77.7);scores.stream().sorted().forEach(s -> System.out.println(s));//默认升序System.out.println("--------------------------------");scores.stream().sorted((s1,s2) -> Double.compare(s2,s1)).forEach(s -> System.out.println(s));//降序System.out.println("--------------------------------");scores.stream().sorted((s1,s2) -> Double.compare(s2,s1)).limit(2).forEach(s -> System.out.println(s));//降序并且取前两个System.out.println("--------------------------------");scores.stream().sorted((s1,s2) -> Double.compare(s2,s1)).skip(2).forEach(s -> System.out.println(s));//降序并且跳过前两个System.out.println("--------------------------------");scores.stream().sorted((s1,s2) -> Double.compare(s2,s1)).distinct().forEach(s -> System.out.println(s));//去重System.out.println("--------------------------------");//映射/加工方法:把流上原来的数据拿出来变成新数据又放到流上去scores.stream().map(s -> "加十分后"+(s+10)).forEach(s -> System.out.println(s));System.out.println("--------------------------------");//合并流:Stream<String> s1 = Stream.of("张无忌", "周芷若", "赵敏", "张强", "张三丰", "张小四");Stream<Integer> s2 = Stream.of(1,2,3);Stream<Object> s3 = Stream.concat(s1, s2);System.out.println(s3.count());}
}
  • Stream流的终结方法
package Demo;import java.util.*;
import java.util.stream.Collectors;public class StreamDemo {public static void main(String[] args) {List<Teacher> teachers = new ArrayList<>();teachers.add(new Teacher("张三", 18, 5000));teachers.add(new Teacher("李四", 19, 6000));teachers.add(new Teacher("王五", 20, 7000));teachers.stream().filter(t -> t.getSalary() > 5000).forEach(System.out::println);//遍历输出System.out.println("--------------------------------");long count = teachers.stream().filter(t -> t.getSalary() > 5000).count();//统计个数System.out.println(count);System.out.println("--------------------------------");Optional<Teacher> max = teachers.stream().max((t1, t2) -> Integer.compare(t1.getSalary(), t2.getSalary()));System.out.println(max.get());//获取最大值System.out.println("--------------------------------");Optional<Teacher> min = teachers.stream().min((t1, t2) -> Integer.compare(t1.getSalary(), t2.getSalary()));System.out.println(min.get());//获取最小值System.out.println("--------------------------------");List<String> list = new ArrayList<>();list.add("张无忌");list.add("周芷若");list.add("赵敏");list.add("张强");list.add("张三丰");list.add("张小四");//收集到list集合List<String> newList = list.stream().filter(s -> s.startsWith("张")).collect(Collectors.toList());//收集到set集合Set<String> newSet = list.stream().filter(s -> s.startsWith("张")).collect(Collectors.toSet());//收集到数组String[] newArray = list.stream().filter(s -> s.startsWith("张")).toArray(String[]::new);//toArray() 方法默认会返回 Object[] 类型的数组,而通过 String[]::new 可以直接得到 String[] 类型的数组//收集到map集合Map<String, Integer> newMap = list.stream().filter(s -> s.startsWith("张")).collect(Collectors.toMap(s -> s, s -> s.length()));}
}

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

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

相关文章

总线矩阵的原理

总线矩阵&#xff08;Bus Matrix&#xff09;是多主设备共享多从设备的智能连接与仲裁核心&#xff0c;本质是一个“灵活的交叉开关阵列”&#xff0c;用于解决多个主设备&#xff08;如CPU、DMA、GPU&#xff09;同时访问多个从设备&#xff08;如内存、外设、存储芯片&#x…

硬件开发_基于Zigee组网的果园养殖监控系统

一.系统概述 果园环境监控系统功能如下&#xff1a; 核心控制器&#xff1a;以STM32为核心控制器&#xff0c;承担整体的数据采集、处理及控制任务。环境参数监测&#xff1a;集成温度传感器、CO₂传感器、光照传感器和土壤湿度传感器&#xff0c;可实时采集果园内的温度、二氧…

K8s调度核心:从Pod分配到节点优化

在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Pod 调度是指 K8s 系统根据特定规则和策略&#xff0c;将 Pod 合理分配到集群中的某个节点&#xff08;Node&#xff09;上运行的过程。其核心目标是确保 Pod 在合适的节点上高效、稳定地运行&#xff0c;充分利用集群资…

Tomcat 企业级运维实战系列(四):Tomcat 企业级监控

Tomcat 企业级运维实战系列&#xff08;四&#xff09;&#xff1a;Tomcat 企业级监控一&#xff1a;监控工具1&#xff09;概述2&#xff09;流程3&#xff09;部署二&#xff1a;监控命令1&#xff09;jps2&#xff09;jstack3&#xff09;jmap4&#xff09;MAT 工具分析三&a…

技术干货丨HyperMesh 新界面功能与技术升级解析

全文内容选自 Altair 区域技术交流会华东站Altair 高级技术经理 张晨《HyperWorks 2025&#xff1a;下一代建模可视化和二次开发平台》演讲1、引言今天我为大家介绍 HyperMesh——这个大家既熟悉又陌生的工具。说熟悉&#xff0c;是因为它一直是工程仿真领域的主流建模软件&…

《IC验证必看|随机稳定性 / 再现性》

同一用例 A 机 pass、B 机 fail&#xff1f;——SystemVerilog 随机稳定性 / 可复现性全攻略&#xff08;含代码与排查清单&#xff09;你该到什么水平&#xff1f;&#xff08;对标 20k / 25k / 30k&#xff09; 20k&#xff08;入门会用&#xff09; 会 randomize()、$urando…

字符编码的本质

目的 最近做一个加密方面的研究&#xff0c;加密之后的二进制&#xff0c;通过转码之后&#xff0c;再也找不回之前的二进制了。 怎么试都不行&#xff0c;真是非常得奇怪&#xff01;&#xff01;&#xff01;&#xff01;先说说字符编码基础知识 在信息技术的海洋中&#xff…

网格图--Day03--网格图DFS--2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量

网格图–Day03–网格图DFS–2658. 网格图中鱼的最大数目&#xff0c;1034. 边界着色&#xff0c;1020. 飞地的数量 今天要训练的题目类型是&#xff1a;【网格图DFS】&#xff0c;题单来自灵艾山茶府。 适用于需要计算连通块个数、大小的题目。 部分题目做法不止一种&#xff0…

新能源车焊接中发那科机器人保护气省气方法

在新能源汽车制造领域&#xff0c;焊接工艺是保障车身结构强度与安全性的关键环节&#xff0c;发那科焊接机器人凭借高精度与稳定性成为产线主力设备。保护气体消耗在焊接成本中占比显著&#xff0c;寻找高效省气方法成为行业降本增效的核心需求。WGFACS节气装置以智能化控制技…

CornerNet2025再研究---将目标检测问题视作关键点检测与配对

CornerNet于2019年3月份提出&#xff0c;CW近期回顾了下这个在当时引起不少关注的目标检测模型&#xff0c;它的亮点在于提出了一套新的方法论——将目标检测转化为对物体成对关键点(角点)的检测。通过将目标物体视作成对的关键点&#xff0c;其不需要在图像上铺设先验锚框(anc…

【C++】vector(2)

目录 1. insert的实现 2. 迭代器失效 2.1 迭代器失效的两种情况 指向已释放的内存&#xff08;物理失效&#xff09; 元素移动导致迭代器指向错误&#xff08;逻辑失效&#xff09; 2.2 修改代码 3. erase的实现 ​编辑修改代码 4. resize的实现 5. 构造函数 5.1 默认…

机器翻译:python库translatepy的详细使用(集成了多种翻译服务)

更多内容请见: 机器翻译修炼-专栏介绍和目录 文章目录 一、translatepy概述 1.1 translatepy介绍 1.1 安装 二、基本使用 2.1 初始化 `Translator` 2.2 文本翻译 2.3 语言检测 2.4 获取翻译备选方案 2.5 单词音标获取 2.6 语音合成 2.7 例句查询 2.8 拼写检查 三、高级功能 3.…

Spring Bean生命周期的完全指南

简介&#xff1a;超越Bean——揭开Spring Bean的隐秘生活 想象一场复杂宏大的舞台剧。作为观众&#xff0c;我们看到的是最终的演出——一个流畅运行的应用程序。但在这光鲜的幕后&#xff0c;隐藏着一套严谨细致的流程&#xff1a;选角&#xff08;实例化Bean&#xff09;、试…

网络安全A模块专项练习任务九解析

任务九&#xff1a;Linux操作系统安全配置-2任务环境说明&#xff1a; (Linux)系统&#xff1a;用户名root&#xff0c;密码1234561. 设置禁止使用最近用过的6个旧密码&#xff0c;将配置文件中对应的部分截图&#xff1b;编辑/etc/pam.d/system-auth文件&#xff0c;找到passw…

Linex进程管理

一、进程查看命令1.pstree用于查看进程树之间的关系&#xff0c;谁是父进程&#xff0c;谁是子进程&#xff0c;可以清楚的看出来是谁创建了谁语法&#xff1a;pstree [选项] -A各进程树之间的连接以ASCII码字符来连接-U各进程树之间的连接以utf8字符来连接&#xff0c;某些终…

手写MyBatis第47弹:Interceptor接口设计与Invocation上下文传递机制--MyBatis动态代理生成与方法拦截的精妙实现

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

自动驾驶中的传感器技术37——Lidar(12)

这里对当前Lidar中的一些常见问题进行专项论述。首先以禾赛Lidar为例&#xff0c;列出相关参数&#xff0c;以备论述。 图1 禾赛AT128参数图2 禾赛AT360参数图3 禾赛AT1440参数图4 禾赛AT128可靠性验证项图5 禾赛AT128产品证书1、Lidar的线束是什么&#xff0c;由什么决定&…

Meteor主题友链页面自研

发布于&#xff1a;Eucalyptus-Blog Meteor主题虽然设计简约现代&#xff0c;但由于缺乏原生的友情链接管理功能&#xff0c;许多博主只能将友情链接勉强添加在网站底部&#xff0c;这不仅影响页面美观&#xff0c;也不便于访客查找和互动&#xff1b;为了解决这一痛点&#xf…

QT控件QPlainTextEdit、QTextEdit与QTextBrowser的区别

一.主要功能对比二.关键功能差异1.文本类型支持QPlainTextEdit&#xff1a;仅支持纯文本&#xff08;Plain Text&#xff09;&#xff0c;不处理任何格式&#xff08;如字体、颜色、链接、图片等&#xff09;。文本以原始字符形式存储&#xff0c;适合处理日志、代码、配置文件…

【思考】WSL是什么

WSL WSL是什么呢&#xff1f; WSL 是 windows subsystem for linux 的简写&#xff0c;指的是 windows10 的一个子系统&#xff0c;这个子系统的作用是在 windows 下运行 linux 操作系统。 有了WSL&#xff0c;就可以在 windows10 中运行linux操作系统了。许多在 linux 种运行的…