java - 如何从对象列表中获取指定字段值最大的元素
问题描述
如何从对象列表中获取指定字段值最大的元素?
public class MyObj {
private String name;
private int value;
// getter & setter
}
List<MyObj> list = Arrays.asList(
new MyObj("a", 1),
new MyObj("b", 1),
new MyObj("c", 2),
new MyObj("d", 2),
new MyObj("e", 3),
new MyObj("f", 3)
);
// how to get the objs which value is max, here is MyObj("e", 3) and MyObj("f", 3)
List<MyObj> maxList = //todo ;
注意:不要取最大值
解决方案
这将完成这项工作。它首先根据该值获取最大值并根据该值过滤列表。
int maxValue = list.stream()
.mapToInt(MyObj::getValue)
.max().orElse(Integer.MIN_VALUE);
List<MyObj> maxList = list.stream()
.filter(obj -> obj.getValue() == maxValue)
.collect(Collectors.toList());
推荐阅读
- aws-lambda - 测试 AWS 无服务器的方法
- matlab - MatLab静默安装等待下一步操作,直到安装完成
- java - 更改用户的权限时刷新 MySQL 连接对象
- spring - Spring RestTemplate 的行为与 Postman 不同
- firebase-storage - 生成下载网址的最佳方式
- javascript - 为什么这个 javascript 函数返回两个不同的值?
- javascript - 如何处理必须拆分为单独部分的数字?
- amazon-redshift - 在 Redshift sql 查询中选择表的顶部/底部 50%
- android - 带有 androidx 导航组件的上下文操作栏
- java - MyRoster 班级有一些问题。特别是我的排序方法和 removeNull 方法