我想要实现的是从ArrayList<Object>获得对象的最小/最大属性值.例如,如果Object具有属性weight(浮点),我想要列表中最重的对象.

I've tried to implement Comparable to get max/min value but this returns same value for min and same for max for some reason. (I don't know if it works with floats)

    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()
    }

That specific question from duplicate post does not show me how to get max/min value based on Float. That's the problem. If I want to modify Comparator it accepts only Int. And i cant use that stream feature because my app is for API 23+ not 24+

推荐答案

我想你要找的是minBymaxBy:

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

Kotlin相关问答推荐

这些Kotlin函数等效吗?

Android前台服务 list —Altbeacon

Jetpack Compose Material3和Material2 Slider onValueChangeFinded()的行为不同

我如何测试一个可组合组件没有显示,但如果它不存在也接受?

用A*搜索算法解决特修斯和米诺陶尔难题

有没有什么方法或算法可以在没有存储的情况下生成唯一的随机数?

在 kotlin 中模拟伴随对象函数

判断 AAR 元数据值时发现的一个或多个问题:

调用单元测试验证伴随对象方法

Kotlin如何分派invoke操作符?

Kotlin:什么是 kotlin.String!类型

Firestore - 如何在 Kotlin 中排除数据类对象的字段

Tornadofx - 如何在每个实例上将参数传递给 Fragment

Kotlin:具有多个不同类型设置器的单个属性

无法解决:androidx.lifecycle:lifecycle-extensions-ktx:2.0.0-alpha1

在 Kotlin 中创建非绑定服务

如何启用spring security kotlin DSL?

如何在伴随对象中使用泛型

如何在 spring-boot Web 客户端中发送请求正文?

如何在 Fragment 中使用 Anko DSL?