android 如何比较一对中的两个对象并返回最大值

ogq8wdun  于 2023-02-02  发布在  Android
关注(0)|答案(2)|浏览(154)

我有一个Pair<Object1, Object2>类型的对象,现在我试图返回一个对象,在这个对象中,它的值的比较值更低。
我在Kotlin中看到了下面的函数

/**
 * Returns the smaller of two values.
 * 
 * If values are equal, returns the first one.
 */
@SinceKotlin("1.1")
public actual fun <T : Comparable<T>> minOf(a: T, b: T): T {
    return if (a <= b) a else b
}

这个方法应该对我有用,因为我需要查看两个对象中哪个对象的值最小并返回该对象
所以我希望返回的对象为

minOf(pair.first.price, pair.second.price).storeName

但这个会在双精度比较器中产生
如何为这两个对象添加比较器并返回具有min值的对象?

qaxu7uf2

qaxu7uf21#

你的问题缺少一些关于你的数据结构的细节,以及它意味着什么对象更低。然而,如果我正确理解你的例子,这就是你可以做到这一点的方法:

minOf(pair.first, pair.second, compareBy { it.price }).storeName

或者,我们可以通过转换为列表来更简洁地完成,尽管我认为这可能会产生误导,并且不值得对性能造成影响:

pair.toList().minBy { it.price }.storeName
hgqdbh6s

hgqdbh6s2#

if (pair.first.price <= pair.second.price) pair.first else pair.second

相关问题