我要实现的是从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+
最佳答案
val minObject: CustomObject? = arrayList.minBy { it.floatVal1 }
val maxObject: CustomObject? = arrayList.maxBy { it.floatVal1 }
关于arraylist - 如何根据其对象属性值从ArrayList中获取最小值/最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52466209/