Ce que je veux atteindre, c'est obtenir la valeur d'attribut min/max de l'objet à partir de ArrayList<Object>. Par exemple, si Object a l'attribut weight(float), je veux l'objet le plus lourd de la liste.

J'ai essayé d'implémenter Comparable pour obtenir la valeur max/min, mais cela renvoie la même valeur pour min et la même pour max pour une raison quelconque. (je ne sais pas si ça marche avec des flotteurs)

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

Cette question spécifique de la publication en double ne me montre pas comment obtenir la valeur max/min basée sur Float. C'est le problème. Si je veux modifier Comparator, il accepte uniquement Int. Et je ne peux pas utiliser cette fonctionnalité de flux car mon application est pour API 23+ et non 24+

10
martin1337 23 sept. 2018 à 15:43

1 réponse

Meilleure réponse

Je pense que vous cherchez minBy< /a> et maxBy :

 val minObject: CustomObject? = arrayList.minBy { it.floatVal1 }
 val maxObject: CustomObject? = arrayList.maxBy { it.floatVal1 }
22
zsmb13 23 sept. 2018 à 16:34