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

时间:2018-09-23 12:43:23

标签: arraylist kotlin comparable

我要实现的是从//set "nbrlits" to disabled state each time "couple" radiobutton is selected nbrlits.disableProperty().bind(couple.selectedProperty()); 获取对象的最小/最大属性值。例如,如果ArrayList<Object>具有属性Object(浮动),则我希望列表中的对象最重。

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

weight

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

2 个答案:

答案 0 :(得分:5)

我认为您正在寻找minBymaxBy

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

答案 1 :(得分:1)

val maxObj: Object? = arrayList.maxByOrNull { it.floatVal1 }
val minObj: Object? = arrayList.minByOrNull { it.floatVal2 }

maxBy,minBy为deprecated,自Kotlin 1.4起