首页 > 解决方案 > 根据对象列表中的某些字段获取最小对象

问题描述

我是 Android 开发的新手,我正在尝试找到基于 3 个字段从对象列表中获取最小对象的最佳方法。我有一个对象列表,每个对象有 4 个字段:NameState(int 值)、LSeconds(int 值)和USeconds(int 值)。我想首先通过State(最小状态值)获得最小对象,如果两个或多个对象具有相同的最小状态来检查LSeconds查找对象的值,如果这些也是相同的检查USeconds并最终返回如果有多个对象具有相同的最小值State、最小值LSeconds和最小值,则为第一个USeconds。有没有可以自动执行此操作的功能,还是我需要使用for?

标签: javaandroidcollections

解决方案


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 答案


推荐阅读