arraylist - 如何根据其对象属性值从ArrayList中获取最小值/最大值?

标签 arraylist kotlin comparable

我要实现的是从ArrayList<Object>获取对象的min/max属性值。例如,如果Object具有weight属性(浮点型),则我想要列表中最重的对象。

我试图实现Comparable以获取最大值/最小值,但是出于某种原因,这会返回相同的最小值和相同的最大值。 (我不知道它是否可以与浮点数一起使用)

    val maxVal: Float = arrayList.max().floatVal1
    val minVal: Float = arrayList.min().floatVal1

    data class CustomObject(var val1: String, var floatVal1: Float , var floatVal2: Float?, var floatVal3: Float?, var floatVal4: Float?): Comparable<CustomObject>{
        override fun compareTo(other: CustomObject) = (floatVal1 - other.floatVal1).toInt()
    }

来自重复帖子的特定问题并未向我展示如何基于Float获得最大/最小值(value)。那就是问题所在。如果我要修改Comparator,则它仅接受Int。我不能使用该流功能,因为我的应用程序适用于API 23+,而不是24+

最佳答案

我认为您正在寻找 minBy maxBy :

 val minObject: CustomObject? = arrayList.minBy { it.floatVal1 }
 val maxObject: CustomObject? = arrayList.maxBy { it.floatVal1 }

关于arraylist - 如何根据其对象属性值从ArrayList中获取最小值/最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52466209/

相关文章:

java - 进程不在类型变量 T 的范围内

Java - 如何检测文本文件中的行数并进行计算

java - 如果给定索引处存在ArrayList替换元素?

java - 如何对对象的 ArrayList 进行排序?

android - 如何获取另一个模块中Application()类的引用?

java - java comparable上的排序算法问题

java - 在 ArrayList 上排序但 ArrayList 具有相同的值

rest - 如何将多个 HTTP Verb 映射到 HTTP4K 中的同一路径

android - viewBinding为什么让XML根全屏

java compareTo方法实现