Java8强大的Stream流

听课遇到个有意思的题目:
请按照给出的数据,找出同时满足以下条件的用户:偶数id,年龄大于24
用户名字转为大写且倒叙排列,只输出第一个用户名字

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);
	
	//以下是你的代码实现
	
}

我当时是这么写的

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);
	
	//以下是你的代码实现
	User u = null;
	for (User user : list) {
	  // 倒序取第一个,就相当于正序取最后一个,所以当for循环结束,u就是要找的那个user对象
	  if (user.getId() % 2 == 0 && user.getAge() > 24) {
	    u = user;
	  }
	}
	
	// 取其username转换为大写显示
	System.out.println(u.getUserName().toUpperCase());

结果老师用Stream流做,简直太震惊了,然后自己又写了写,加上了注释

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() // 转换为stream流
	    .filter(u -> u.getId() % 2 == 0 && u.getAge() > 24) // 过滤出id为偶数且年龄大于24的对象
	    .map(u -> u.getUserName().toUpperCase()) // 用对象获取(映射)对应的名字的大写
	    .sorted(Comparator.reverseOrder()) // 颠倒名字的自然排序(倒序)
	    .limit(1l) // 截取第一个
	    .forEach(System.out::println);

看着挺装13的,感觉上java8好多语法跟以前的java都不是同一个语言了o(╯□╰)o,可能是没用惯吧,总觉得没有传统的那种方式用着踏实。。。
不过老师说java8以后jdk源码中大量的使用这种新特性,这个是发展趋势~
嗯,老师说的都是对的(0_0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值