java - 根据对象列表中的某些字段获取最小对象
问题描述
我是 Android 开发的新手,我正在尝试找到基于 3 个字段从对象列表中获取最小对象的最佳方法。我有一个对象列表,每个对象有 4 个字段:Name
、State
(int 值)、LSeconds
(int 值)和USeconds
(int 值)。我想首先通过State
(最小状态值)获得最小对象,如果两个或多个对象具有相同的最小状态来检查LSeconds
查找对象的值,如果这些也是相同的检查USeconds
并最终返回如果有多个对象具有相同的最小值State
、最小值LSeconds
和最小值,则为第一个USeconds
。有没有可以自动执行此操作的功能,还是我需要使用for
?
解决方案
Java 对您要查找的对象没有这种排序功能。但是,如果您使用StreamSupport Java 库,则可以使用一种方法,如下所示:
List<YourObject> result = list.stream().sorted((ob1, ob2)-> ob1.getState().
compareTo(ob2.getState())).
collect(Collectors.toList());
您可以使用此 lambda 来应用您正在寻找的逻辑(先检查State
,然后检查LSeconds
,等等。)
PS:您可以使用 Kotlin 轻松做到这一点,就像在这个问题中一样
编辑:实际上,您可以使用 Java 8,抱歉。检查@mạnh-quyết-nguyễn 答案。
推荐阅读
- c++ - 如何拥有两个同名但返回类型不同的纯虚方法
- angular - 如何在 Angular 5 中更改 ng-template 变量
- python - Django:固定装置对象不可检索
- javascript - 创建具有扩展行的基本表
- python - 将级别附加到 pandas MultiIndex
- java - 是否可以在创建对象后使其不可变
- javascript - react-bootstrap中的多行ButtonGroup
- javascript - React-slick carousel - 自动播放在子组件中不起作用,同时使用父组件的道具触发它
- angular - 无法以角度形式显示 formcontrol 对象
- c# - 修改后无法更新 ModelState