m0_56112450 2021-06-05 13:08 采纳率: 100%

# Steam流式计算的一道题，求大神帮忙解答。

``````/**
* 题目要求：一分钟内完成此题，只能用一行代码实现
* 现在有五个用用户！筛选：
* 1、ID必须为偶数
* 2、年龄必须大于23岁
* 3、用户名转化为大写
* 4、用户名字母倒着排序
* 5、只输出一个用户
*/
public class Test1 {
public static void main(String[] args) {
User u1 = new User(1, "aa", 21);
User u2 = new User(2, "bb", 22);
User u3 = new User(3, "cc", 23);
User u4 = new User(4, "dd", 24);
User u5 = new User(6, "ee", 25);
//集合就是管存储
List<User> list = Arrays.asList(u1, u2, u3, u4, u5);

list.stream()
.filter(u->{return u.getId()%2==0;})
.filter(u->{return u.getAge()>23;})
.map(u->{return u.getName().toUpperCase();})
.sorted((uu1,uu2)->{return uu2.compareTo(uu1);})
.limit(1)
.forEach(System.out::println);

}
}``````

``````public class Test {
public static void main(String[] args) {
User u1 = new User(1, "aa", 21);
User u2 = new User(2, "bb", 22);
User u3 = new User(3, "cc", 23);
User u4 = new User(4, "dd", 24);
User u5 = new User(6, "ee", 25);

//集合就是管存储
List<User> list = Arrays.asList(u1, u2, u3, u4, u5);

//Stream流计算
//1、第一步先把集合变为流,变成Stream类型
Stream<User> stream = list.stream();

//2、filter（）方法：把ID为偶数的对象挑出来
Predicate<User> predicate1 = new Predicate<User>() {
public boolean test(User u) {
if (u.getId() % 2 == 0) {
return true;
}else {
return false;
}
}
};
Stream<User> stream1 = stream.filter(predicate1);//filter方法只输入判断为true的对象

//3、filter（）方法：把年龄大于23岁挑出来
Predicate<User> predicate2 = new Predicate<User>() {
public boolean test(User u) {
if (u.getAge()>23) {
return true;
}else {
return false;
}
}
};
Stream<User> stream2 = stream1.filter(predicate2);//filter方法只输入判断为true的对象

//4、map（）方法：获取用户名
//toUpperCase()方法：把字符串改为大写
Function function1 = new Function<User,String>() {//写好泛型
public String apply(User user) {
String name=user.getName().toUpperCase();//把用户名改为大写
return name;
}
};
Stream stream3 = stream2.map(function1);

就是这边，cmpareTo()方法被重写了，没有思路去分解出来
//5、sorted()方法：把用户名倒着排序
Comparable<Stream> comparable = new Comparable<Stream>() {
@Override
public int compareTo(Stream o) {
return 0;
}
};
}
}``````
• 写回答

#### 2条回答默认 最新

• CSDN专家-sinJack 2021-06-05 13:57
关注
`````` Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return  o1.getName() > o2.getName() ? 1 : (o1.getName() == o2.getName() ? 0 : -1);
}
});

``````

用这种把。

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥15 商城生产日期批次库存问题
• ¥15 esp8266控制共阳极wrgb灯板无法关闭所有led灯
• ¥100 python读取速度问题
• ¥15 stm32f407使用DMA问题
• ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
• ¥88 用uniapp写一个多端的程序，用到高德地图，用高德的JSAPI吗？
• ¥20 关于#c++#的问题：水果店管理系统
• ¥30 dbLinq最新版linq sqlite
• ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉，现在该如何下载回来
• ¥15 完成虚拟机环境配置，还有安装kettle