我希望输出为:[3.0, 2.36, 1.1]
键和以相同方式排序的值[three, one, two]
fun main() {
var l = 0
var letters = arrayOf("one", "two", "three")
var digits = arrayOf(2.36, 1.1, 3.0)
var list = mutableMapOf<Double, String>()
repeat(3)
{
list.put(digits[l], letters[l])
l++
}
println(list.toSortedMap(compareByDescending<Double> { list[it]) })
}
我怎样才能做到这一点?在我的尝试中,代码更改为
[1.1, 3.0, 2.36]
[two, three, one]
首先确定letters
列表包含正确顺序的数据,在您的问题中的第二个位置digits
你有 1.1 并在letters
你有两个,这对我来说似乎是一个错误
var letters = arrayOf("two", "one", "three")
var digits = arrayOf(2.36, 1.1, 3.0)
val x = digits.zip(letters).toMap().toSortedMap { o1, o2 -> o2.compareTo(o1)}
val keys = x.keys.toList() // [3.0, 2.36, 1.1]
val values = x.values.toList() // [three, two, one]
如果您有大量数据集并且不想在运行中的数据结构上浪费内存(Pairs
, List
等)然后你可以直接构建一个SortedMap
val x = emptyMap<Double, String>().toSortedMap{ o1, o2 -> o2.compareTo(o1)}
digits.forEachIndexed{index, value ->
x[value] = letters[index]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)