流式计算

流的基本方法:java1.8新特性之stream流式算法 - 王者之巅 - 博客园 (cnblogs.com)

举例

题目要求

1
2
3
4
5
6
7
8
9
/**
* 题目:请按照给出数据,找出同时满足以下条件的用户
* 也即以下条件:
* 1、全部满足偶数ID
* 2、年龄大于24
* 3、用户名转为大写
* 4、用户名字母倒排序
* 5、只输出一个用户名字
**/

实体类

1
2
3
4
5
6
7
8
9
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
class User {
private int id;
private String userName;
private int age;
}

构造测试数据

1
2
3
4
5
6
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);

运行

1
2
3
4
5
6
7
8
9
10
list.stream()
.filter(u->{return u.getId()%2==0;})
.filter(u->{return u.getAge()>24;})
.map(u->{return u.getUserName().toUpperCase();})
.sorted((o1,o2)->{return o2.compareTo(o1);})
.limit(1)
.forEach(System.out::println);

//运行结果:
//E