Kotlin从2个数组中过滤最大值的方法?

Iva*_*ers 5 arrays kotlin

我目前有2个数组,都包含5个对象.所有对象都包含Int变量.

样本数据:

data class Demo(val number: Int, val name: String)

val a = Demo(12, "a")
val b = Demo(1, "b")
val c = Demo(3, "c")
val d = Demo(5, "d")
val e = Demo(17, "e")

val array1 = arrayOf(a,b,c,d,e)

val f = Demo(3, "f")
val g = Demo(8, "g")
val h = Demo(15, "h")
val i = Demo(16, "i")
val j = Demo(22, "j")

val array2 = arrayOf(f,g,h,i,j)

//val array3 = ??
Run Code Online (Sandbox Code Playgroud)

我要做的是创建一个函数,它将在最大值上过滤这些数组.现在我知道Kotlin在他们的数组上有一个方法max(),它将返回它所使用的数组的最大值.

这让我感到奇怪(目前我正在使用嵌套的for循环,就像在Java中一样.),在Kotlin中是否有一种视觉上美观更快/更好的方式?

使用样本数据的预期输出:

array3[22,17,16,15,12]
Run Code Online (Sandbox Code Playgroud)

Kev*_*tel 9

你想拥有两个数组中的5个较大的int?

(array1 + array2).sortedArrayDescending().take(5)
// [22, 17, 16, 15, 12]
Run Code Online (Sandbox Code Playgroud)

编辑答案:

(array1 + array2).sortedByDescending { it.number }.take(5)
// [Demo(number=22, name=j), Demo(number=17, name=e), Demo(number=16, name=i), Demo(number=15, name=h), Demo(number=12, name=a)]
Run Code Online (Sandbox Code Playgroud)

http://try.kotlinlang.org/#/UserProjects/6eu172fogobv6na0mtafc9k9ol/klp8i0ttl32ip1q8ph3lk0s9bn