Java Stram 流对于返回对象的处理 (结束流)

package com.zhong.streamdemo.showdownstreamdemo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.util.*;import java.util.stream.Collectors;import java.util.stream.Stream;/** * @ClassName : ShowDownStream * @Description : 结束 stream 的几种方法 * @Author : zhx * @Date: 2024-02-08 16:21 */public class ShowDownStream {public static void main(String[] args) {ArrayList<Student> students = new ArrayList<>(List.of(new Student("小钟", 22, 179.1),new Student("小钟", 22, 179.1),new Student("小王", 21, 153.9),new Student("小王", 21, 153.9),new Student("张三", 52, 160.8),new Student("李四", 42, 140.5),new Student("王五", 18, 135.3)));// 1、计算出升高超过 153 的有多少System.out.println("-------------计算出升高超过 153 的有多少-------------");long count = students.stream().filter(x -> x.getHeight() > 153).count();System.out.println(count);// 2、找出身高最高的学生对象并输出System.out.println("-------------找出身高最高的学生对象并输出-------------");Student student = students.stream().max(Comparator.comparingDouble(Student::getHeight)).get();System.out.println(student);// 3、计算出升高超过 153 的对象并放到一个新的集合返回System.out.println("-------------计算出升高超过 153 的对象并放到一个新的集合返回-------------");List<Student> collect = students.stream().filter(x -> x.getHeight() > 153).toList();collect.forEach(System.out::println);// 4、计算出升高超过 153 的对象 把姓名和身高放到一个新的 Map 集合返回System.out.println("-------------计算出升高超过 153 的对象 把姓名和身高放到一个新的 Map 集合返回-------------");Map<String, Double> collect1 = students.stream().filter(x -> x.getHeight() > 153).distinct() // 注意这里有重复的数据需要到学生类里面重写hashCode() 和 equals() 然后调用 distinct() 进行去重操作 不然会报错.collect(Collectors.toMap(Student::getName, Student::getHeight));collect1.forEach((k, v) -> System.out.println(k + " ==> " + v));// 5、找出身高最高的学生对象 收集到学生数组System.out.println("-------------5、找出身高最高的学生对象 收集到学生数组-------------");Student[] array = students.stream().filter(x -> x.getHeight() > 153).toArray(Student[]::new);for (Student student1 : array) {System.out.println(student1);}}}@Data@AllArgsConstructor@NoArgsConstructorclass Student {private String name;private int age;private double 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);}}