Stream 原理和操作

2022-07-31,,

1.Stream 自己不会存储元素。
2.Stream 不会改变源对象,相反,他们会返回一个持有结果的新Stream。
3.Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行

User实体类

@Data
public class User {   
	 private int id;    
	 private String userName;    
	 private int age;   
 }

/**  
 * @Title: Test.java
 * @Package: com.example.demo1.controll
 * @Description: TODO
 * @author: 爱上深呼吸 
 * @date: 2020年5月8日 下午5:08:16
 * @version: V1.0
 */
package com.example.demo1.controll;

import java.util.Arrays;
import java.util.List;

/**
 * @ClassName: Test
 * @Description: TODO
 * @author: 爱上深呼吸
 * @date: 2020年5月8日 下午5:08:16
 */
/*
 * 题目:请按照给出数据,找出同时满足以下条件的用户 
 *       也即以下条件: 
 *          1、全部满足偶数ID 
 *          2、年龄大于24 
 *          3、用户名转为大写 
 *          4、用户名字母倒排序 
 *          5、只输出一个用户名字 limit 
 **/ 
public class Test {
	 public static void main(String[] args) {
		 		User u1 = new User(11, "a", 23);
				User u2 = new User(12, "b", 24);
				User u3 = new User(13, "c", 22);
				User u4 = new User(14, "d", 28);
				User u5 = new User(16, "e", 26);
				List<User> list = Arrays.asList(u1, u2, u3, u4, u5);
					list.stream() 
					.filter(u -> {return u.getId()%2==0;}) 
					.filter(u -> {return u.getAge()>24;})  
					.map(u -> {return u.getUserName().toUpperCase();})
					//.sorted() //默认正排序  自己用 compareTo 比较                
					.sorted((o1,o2)->{return o2.compareTo(o1);}) 
					.limit(1)
					.forEach(System.out::println);
				}
}

本文地址:https://blog.csdn.net/weixin_43834415/article/details/107674304

《Stream 原理和操作.doc》

下载本文的Word格式文档,以方便收藏与打印。