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

标签 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 = ??

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

这让我想知道(目前我正在使用嵌套的 for 循环,就像有人在 Java 中一样。),在 Kotlin 中是否有一种 视觉上漂亮更快/更好的方法?

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

array3[22,17,16,15,12]

最佳答案

您想要两个数组中的 5 个更大的 int?

(array1 + array2).sortedArrayDescending().take(5)
// [22, 17, 16, 15, 12]

修改后的答案:

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

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

关于arrays - Kotlin从2个数组中过滤最大值的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240667/

相关文章:

javascript - 数组对象的修改

lambda - 如何将 lambda 表达式放在 mapTo 调用合法语法的参数之后?

kotlin - 将 Spring Webflux Mono 转换为 Either,最好不阻塞?

用于二维文本数组上的类似矩阵转换的 JavaScript 库?

arrays - 将 float64 数组转换为 float32 数组

javascript - JS : How to extract nested string of object?

javascript - 在 Javascript 中用 1 个已知字符和一些未知字符分割字符串

java - 如何解决Spring上下文的循环依赖?

android - 适用于 Android 的 Kotlin 扩展 : How to use bundleOf

Kotlin:如何限制 block 内的范围?