- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用下面的 sortwith 方法对我的 ArrayList 进行排序,我想它会将订单号从小到大排序。比如10、9、8、7、6....0。但是结果不是我所期望的。请帮助解决这个问题。
companyList.add(companyReg)
companyList.sortedWith(compareBy { it.order })
for (obj in companyList) {
println("order number: "+obj.order)
}
最佳答案
看这个例子:
fun main(args: Array<String>) {
val xx = ArrayList<Int>()
xx.addAll(listOf(8, 3, 1, 4))
xx.sortedWith(compareBy { it })
// prints 8, 3, 1, 4
xx.forEach { println(it) }
println()
val sortedXx = xx.sortedWith(compareBy { it })
// prints sorted collection
sortedXx.forEach { println(it) }
}
为什么会这样?因为在 Kotlin 中,大多数集合都是不可变的。 collection.sortedWith(...)
是一个扩展函数,它返回你的集合的排序副本,但实际上你忽略了这个结果。
当然,您可以使用其他方法修改集合(如 .sort()
)或 Collections.sort(collection, comparator)
。这种排序方式不需要分配新的集合(因为没有新的集合,只修改current)。
关于android - kotlin Android sortwith 数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50792534/
给定 Tuple2 的列表,我想对它们进行排序,以便其中一个的第二个元素是下一个的第一个元素。我试过用 sortWith 来做,但它在某些情况下有效,但在其他情况下无效。谁能看出我哪里搞砸了? Wel
我想按如下方式应用自定义排序比较器: myString.sortWith{ case (c1,c2) => c1.compareTo(c2) c1.compareTo(c2) val str =
我需要在 scala 上制作 java ArrayList 它是类、文件-字段的排序方法。要使用 ArrayList,我导入了 java.util.ArrayList 和 scala.collecti
我正在尝试对一组对象进行排序。 当我尝试使用 sortWith 函数只对对象中的一个字段进行排序时,它工作得很好。 当多个字段被排序时,它就会搞砸。 例如。 scala> val res = bran
我在使用 Ramda sortWith 按多列(升序或降序)对深度嵌套的对象数组进行排序时遇到问题。显然,排序是区分大小写的,并且导致以小写字母开头的值被放置到排序数组的最末尾。 首先,我导入必要的
我使用下面的 sortwith 方法对我的 ArrayList 进行排序,我想它会将订单号从小到大排序。比如10、9、8、7、6....0。但是结果不是我所期望的。请帮助解决这个问题。 company
我在 scala(2.11.8 和 2.12.1)中遇到 Seq[(Long, Double)] _._2) output >>> Seq[(Long, Double)] = List((11,11.
Scala 在标准库中包含了几种对列表进行排序的方法,例如对列表列表进行排序,可以使用: list.sorted list.sortWith(_x) 虽然这些可能是对列表进行排序的最简单方法,但我发现
我只是在探索 kotlin 集合,我观察到了一个重要的行为。 val sports = listOf( Sports("cricket", "7"), Sports("
我是一名优秀的程序员,十分优秀!