Java stream 的基本使用
package com. zhong. streamdemo. usestreamdemo ; import jdk. jfr. DataAmount ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ; import java. util. ArrayList ;
import java. util. Comparator ;
import java. util. List ;
import java. util. Objects ;
import java. util. stream. Stream ;
public class UseStream { public static void main ( String [ ] args) { System . out. println ( "-------------筛选成绩大于60分的信息-------------" ) ; ArrayList < Double > strem1 = new ArrayList < > ( List . of ( 60.1 , 45.2 , 90.2 , 99.9 , 76.3 ) ) ; List < Double > collect = strem1. stream ( ) . filter ( x -> x > 60 ) . toList ( ) ; System . out. println ( collect) ; System . out. println ( "-------------stream 对于对象的操作-------------" ) ; 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 ) ) ) ; System . out. println ( "-------------筛选年龄大于 17 且小于 30 的学生信息-------------" ) ; List < Student > list = students. stream ( ) . filter ( x -> x. getAge ( ) > 17 ) . filter ( x -> x. getAge ( ) < 30 ) . toList ( ) ; list. forEach ( System . out:: println ) ; System . out. println ( "-------------筛选身高前三的学生信息-------------" ) ; List < Student > list1 = students. stream ( ) . sorted ( Comparator . comparing ( Student :: getHeight ) ) . skip ( students. size ( ) - 3 ) . toList ( ) ; list1. forEach ( System . out:: println ) ; System . out. println ( "-------------筛选身高前三的学生信息-------------" ) ; List < Student > list2 = students. stream ( ) . sorted ( Comparator . comparing ( Student :: getHeight ) ) . limit ( 2 ) . toList ( ) ; list2. forEach ( System . out:: println ) ; System . out. println ( "-------------筛选身高超过 153 的学生的姓名 去除重复的名字-------------" ) ; List < String > list3 = students. stream ( ) . filter ( x -> x. getHeight ( ) > 153 ) . map ( Student :: getName ) . distinct ( ) . toList ( ) ; System . out. println ( list3) ; System . out. println ( "-------------Stream.concat(stream1, stream2) 合并流-------------" ) ; Stream < String > stream1 = Stream . of ( "张三1" , "李四1" ) ; Stream < String > stream2 = Stream . of ( "张三2" , "李四2" , "王五2" ) ; Stream < String > concatStream = Stream . concat ( stream1, stream2) ; concatStream. forEach ( System . out:: println ) ; }
} @Data
@AllArgsConstructor
@NoArgsConstructor
class Student { private String name; private int age; private double height;
}