Как получить мин / макс из ArrayList на основе его значений атрибутов объекта? - PullRequest
0 голосов
/ 23 сентября 2018

Чего я хочу добиться, так это получить значение атрибута min / max объекта ArrayList<Object>.Например, если Object имеет атрибут weight (с плавающей точкой), я хочу получить самый тяжелый объект из списка.

Я пытался реализовать Comparable, чтобы получить значение max / min, но это возвращает то же значение для min ито же самое для макс по какой-то причине.(Я не знаю, работает ли он с плавающей точкой)

    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.Это проблема.Если я хочу изменить Comparator, он принимает только Int.И я не могу использовать эту функцию потока, потому что мое приложение для API 23+, а не 24 +

1 Ответ

0 голосов
/ 23 сентября 2018

Я думаю, вы ищете minBy и maxBy:

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