第十三节:第七部分:Stream流的中间方法、Stream流的终结方法

Stream流常见的中间方法

Stream流常见的中间方法

Stream流常见的终结方法

Stream流常见的终结方法
Stream流常见的终结方法2

代码

学生类(代码一与代码二共涉及到的类)

package com.itheima.day28_Stream;import java.util.Objects;public class Student implements Comparable<Student> {private String name;private int age;private double height;@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", height=" + height +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Double.compare(height, student.height) == 0 && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, age, height);}public Student() {}public Student(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}@Overridepublic int compareTo(Student o) {return this.age - o.age;//年龄升序排序}
}

代码一:掌握Stream流提供的常见中间方法

package com.itheima.day28_Stream;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;//目标:掌握Stream流提供的常见中间方法
public class StreamTest3 {public static void main(String[] args) {List<Double> scores = new ArrayList<>();Collections.addAll(scores,88.5,56.6,58.8,89.9,100.0,16.6);// 需求1:找出成绩大于等于60分的数据,并升序后,再输出。scores.stream().filter(s->s>=60).sorted().forEach(s->System.out.println(s));List<Student>students =new ArrayList<>();Student s1 = new Student("蜘蛛精",26,172.5);Student s2 = new Student("蜘蛛精",26, 172.5);Student s3 = new Student( "紫霞",23, 167.6);Student s4 = new Student("白晶品", 25,169.0);Student s5 = new Student("牛魔王",35,183.3);Student s6 =new Student( "牛夫人", 34,168.5);Collections.addAll(students,s1,s2,s3,s4,s5,s6);// 需求2:找出年龄大于等于23,且年龄小于等于30岁的学生,并按照年龄降序输出.students.stream().filter(s -> s.getAge()>=23 && s.getAge()<=30).sorted((o1,o2)-> o2.getAge()-o1.getAge())//使用lambda简写,年龄降序排列.forEach(s->System.out.println(s));System.out.println("===========================================");//需求3:取出身高最高的前3名学生,并输出。students.stream().sorted((o1,o2)->Double.compare(o2.getHeight(),o1.getHeight())).limit(3).forEach(System.out::println);System.out.println("===========================================");// 需求4:取出身高倒数的2名学生,并输出。students.stream().sorted((o1,o2)->Double.compare(o2.getHeight(),o1.getHeight())).skip(students.size()-2).forEach(System.out::println);System.out.println("===========================================");// 需求5:找出身高超过168的学生叫什么名字,要求去除重复的名字,再输出。students.stream().filter(s->s.getHeight()>168).map(Student::getName)//把原来的学生对象集合加工(映射)成为名字集合.distinct()//去除重复的名字.forEach(System.out::println);System.out.println("===========================================");// distinct去重复,自定义类型的对象(希望内容一样就认为重复,重写hashCode,equals)students.stream().distinct().forEach(System.out::println);System.out.println("===========================================");//合并两个stream流Stream<String> str1 = Stream.of("张三", "李四");Stream<String> str2 = Stream.of("张3", "李4","王五");Stream<String> Allst = Stream.concat(str1, str2);Allst.forEach(System.out::println);}
}

结果1.1
结果1.2

代码二:掌握Stream流提供的常见终结方法

package com.itheima.day28_Stream;import java.util.*;
import java.util.stream.Collectors;
//目标:掌握Stream流提供的常见终结方法
public class StreamTest4 {public static void main(String[] args) {List<Student> students =new ArrayList<>();Student s1 = new Student("蜘蛛精",26,172.5);Student s2 = new Student("蜘蛛精",26, 172.5);Student s3 = new Student( "紫霞",23, 167.6);Student s4 = new Student("白晶品", 25,169.0);Student s5 = new Student("牛魔王",35,183.3);Student s6 =new Student( "牛夫人", 34,168.5);Collections.addAll(students,s1,s2,s3,s4,s5,s6);// 需求1:请计算出身高超过168的学生有几人。long count = students.stream().filter(s -> s.getHeight() > 168).count();System.out.println(count);System.out.println("===================================");// 需求2:请找出身高最高的学生对象,并输出。Student stu1 = students.stream().max((o1, o2) -> Double.compare(o1.getHeight(), o2.getHeight())).get();System.out.println(stu1);System.out.println("===================================");// 需求3:请找出身高最矮的学生对象,并输出。Student stu2 = students.stream().min((o1, o2) -> Double.compare(o1.getHeight(), o2.getHeight())).get();System.out.println(stu2);System.out.println("===================================");// 需求4:请找出身高超过170的学生对象,并放到一个新集合中去返回。//流只能收集一次,因此"students.stream().filter(s -> s.getHeight() > 170)"不能单独作为新的stream流分别取做collect(Collectors.toList())与collect(Collectors.toSet())操作List<Student> students1 = students.stream().filter(s -> s.getHeight() > 170).collect(Collectors.toList());System.out.println(students1);Set<Student> students2 = students.stream().filter(s -> s.getHeight() > 170).collect(Collectors.toSet());System.out.println(students2);// 需求5:请找出身高超过170的学生对象,并把学生对象的名字和身高,存入到一个Map集合返回。System.out.println("===================================");Map<String, Double> map = students.stream().filter(s -> s.getHeight() > 170).distinct()//map集合的元素不可重复,因此先去重.collect(Collectors.toMap(a -> a.getName(), a -> a.getHeight()));System.out.println(map);System.out.println("===================================");//存入到数组//写法1Object[] array1 = students.stream().filter(s -> s.getHeight() > 170).toArray();System.out.println(Arrays.toString(array1));System.out.println("======================================");//写法2Student[] array2 = students.stream().filter(s -> s.getHeight() > 170).toArray(len -> new Student[len]);System.out.println(Arrays.toString(array2));}
}

结果2

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

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

相关文章

深入理解 Go 中的字节序(Endianness)检测代码

深入理解 Go 中的字节序&#xff08;大小端&#xff09;检测代码 在计算机系统中&#xff0c;字节序&#xff08;Endianness&#xff09; 是指多字节数据类型&#xff08;如 int16、int32 等&#xff09;在内存中的存储顺序。Go 语言标准库提供了对大端&#xff08;Big-endian&…

JAVA:RabbitMQ 消息持久化机制的技术指南

🐇 1、简述 在使用 RabbitMQ 构建可靠消息系统时,消息丢失是必须避免的问题。为此,RabbitMQ 提供了消息持久化机制(Message Durability),可以保障在 Broker 异常宕机后数据不会丢失。 本篇博客将从原理出发,结合 Spring Boot 实战讲解如何正确实现 RabbitMQ 消息持久…

tabs页签嵌套表格,切换表格保存数据不变并回勾

需求&#xff1a;点击左边的tab页签&#xff0c;请求右侧表格数据&#xff1b;如果返回的接口数据存在taskuser字段并不为null&#xff0c;那么按照这个字段去回勾数据。如果存在数据&#xff0c;但与后面所勾选的数据项不同&#xff0c;按照后面勾选的为主。 <el-tabs tab-…

Java Kafka消费者

基础 Java Kafka消费者主要通过以下核心类实现&#xff1a; KafkaConsumer&#xff1a;消费者的核心类&#xff0c;用于创建消费者对象进行数据消费1ConsumerConfig&#xff1a;获取各种配置参数&#xff0c;如果不配置就使用默认值1ConsumerRecord&#xff1a;每条数据都要封…

Git操作问题及解决方案-记录5

Git操作问题及解决方案 问题一&#xff1a;本地更改与远程更新冲突 问题描述 当本地文件有未提交的更改&#xff0c;同时远程仓库也有更新时&#xff0c;执行git pull会导致冲突。 $ git pull origin main error: Your local changes to the following files would be overw…

一[3]、ubuntu18.04环境 利用 yolov8 训练开源列车数据集,并实现列车轨道检测

一、开源车载数据集地址 (7 封私信) 轨道交通数据集-OSDaR23: Open Sensor Data for Rail 2023 - 知乎 二、参考资料 https://zhuanlan.zhihu.com/p/692608487 YOLOv8训练自己的数据集-CSDN博客 https://download.csdn.net/blog/column/12710137/140991739

C语言数据结构笔记5:Keil 编译器优化行为_malloc指针内存分配问题

记录俩个keil5 STM32 的c语言编程中 &#xff0c;编译器优化行为 和 指针内存分配问题。 目录 关闭Keil 编译器优化行为&#xff1a; malloc指针内存分配问题 多层嵌套的结构体&#xff1a; 用指针取值&#xff1a; 发现问题&#xff1a; 解决问题&#xff1a; 示例代码 关闭Ke…

每日八股文6.12

每日八股-6.12 计算机网络1.当我们在浏览器中输入一个 URL 并按下回车后&#xff0c;到页面最终显示出来&#xff0c;这中间都发生了哪些关键步骤&#xff1f;2.请简述一下 JWT&#xff08;JSON Web Tokens&#xff09;的原理和校验机制3.DNS 是如何进行域名解析的&#xff1f;…

什么是云计算的边缘原生应用?

关于作者&#xff1a;John Bradshaw阿卡迈公司欧洲、中东和非洲地区云计算技术与战略总监 当谈及云计算时&#xff0c;人们往往会联想到那些坐落于国际大都会核心地带的大型数据中心集群&#xff0c;这些设施作为数字时代的重要枢纽&#xff0c;承载着海量数据处理任务。尽管这…

Linux常用命令速查与面试高频命令总结

&#x1f427; Linux常用命令速查与面试高频命令总结 本文旨在帮助初学者快速掌握 Linux 的常用命令&#xff0c;同时为即将参加技术面试的朋友们提供一份高频命令清单和实用技巧。 &#x1f530; 一、基础命令&#xff1a;熟练使用命令行从这里开始 这些是你在 Linux 中最常用…

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…

浅谈DaemonSet

1. DaemonSet 概述 ‌定义‌&#xff1a;DaemonSet 确保 Kubernetes 集群的每个节点上运行一个 Pod 实例。‌特性‌&#xff1a; 每个节点上只有一个 Pod 实例。新节点加入集群时&#xff0c;会自动在新节点上创建 Pod。旧节点被删除时&#xff0c;其上的 Pod 会被回收。 2.…

计算机系统(6)

◆指令寻址方式&#xff1a; 顺序寻址方式&#xff1a;执行一段程序时&#xff0c;是一条指令接着一条指令的顺序执行。 跳跃寻址方式:下一条指令的地址码不是由程序计数器给出&#xff0c;而是由本条指令直接给出。程序跳跃后&#xff0c;按新的指令地址开始顺序执行。因此&…

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…

python打卡训练营打卡记录day51

复习日 作业&#xff1a;day43的时候我们安排大家对自己找的数据集用简单cnn训练&#xff0c;现在可以尝试下借助这几天的知识来实现精度的进一步提高 数据预处理 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transfor…

网络安全:OWASP防护守则

目录 一、OWASP十大WEB弱点防护守则 二、防护守则 1、权限控制失效 2、加密失误 3、注入 4、不安全设计 5、安全配置缺陷 6、易受攻击和过时的组件 7、身份认证和会话管理失效 8、缺乏完整性校验 9、缺乏监控与日志记录 10、服务端请求伪造 三、核心防护原则总结 …

Dagster 实现数据质量自动化:6大维度检查与最佳实践

在当今数据驱动的世界中&#xff0c;数据质量的重要性不言而喻。数据质量测试是确保数据准确、完整、一致和可靠的关键步骤。本文将深入探讨数据质量测试的六大维度&#xff0c;并提供相关的检查方法和最佳实践。 什么是数据质量测试&#xff1f; 数据质量测试涉及评估数据以确…

计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)—— 2. 摄像机标定

文章目录 1. 前置知识1.1. 非齐次线性方程组求解1.1.1. 传统求解方法1.1.2. 奇异值分解法1.1.3. 牛顿法或者梯度下降法 1.2. 齐次线性方程组的最小二乘解1.3. 非线性方程组的最小二乘解 2. 相机标定2.1. 相机内参数求解2.1.1. 求解 u 0 u_0 u0​ 和 v 0 v_0 v0​2.1.2. 求解 …

SQLLL

595-big-countries https://leetcode.com/problems/big-countries/description/ 面积最大的国家 -- select name, population, area from World where area > 3000000 or population > 25000000596-classes-with-at-least-5-students https://leetcode.com/problems/…

MySQL中触发器详解 触发器在自动化任务中的应用场景

触发器是mysql中与表关联的数据库对象&#xff0c;能在特定操作&#xff08;如insert、update、delete&#xff09;发生时自动执行预定义sql逻辑。其核心用途包括&#xff1a;1. 维护数据一致性&#xff0c;如订单插入后自动减少库存&#xff1b;2. 记录审计日志&#xff0c;如…