mar*_*337 2 arraylist comparable kotlin
我要实现的是从获取对象的min / max属性值ArrayList<Object>。例如,如果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()
}
Run Code Online (Sandbox Code Playgroud)
重复帖子中的那个具体问题并未向我展示如何基于Float获得最大/最小价值。那就是问题所在。如果我要修改Comparator,则它仅接受Int。而且我无法使用该流功能,因为我的应用程序适用于API 23+而非24+
val minObject: CustomObject? = arrayList.minBy { it.floatVal1 }
val maxObject: CustomObject? = arrayList.maxBy { it.floatVal1 }
Run Code Online (Sandbox Code Playgroud)
val maxObj: Object? = arrayList.maxByOrNull { it.floatVal1 }
val minObj: Object? = arrayList.minByOrNull { it.floatVal2 }
Run Code Online (Sandbox Code Playgroud)
maxBy, minBy自 Kotlin 1.4 起已弃用
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |