Kotlin - 基于Object Property对MutableList进行排序

时间:2017-07-16 15:59:06

标签: list sorting kotlin

我有这个令牌对象:

class Token(type: TokenType, value: String, position: IntRange = 0..0)

我宣布一个MutableList:

val tokens: MutableList<Token> = mutableListOf()

// Mutable List filled

现在我想根据IntRange位置的第一个值对列表进行排序。我试过这样做:

tokens
          .sortedBy { it.position.first }

但是,在使用it关键字后我无权访问该对象,因此位置以红色突出显示。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

另一个观察是sortedBy返回列表的排序副本。如果要对可变列表进行排序,则应使用sortBy函数:

tokens.sortBy { it.position.first } 
// tokens is sorted now

答案 1 :(得分:1)

positionparameter而不是propertyval / {property上的primary constructor var {1}}关键字,例如:

//makes the parameter to a property by `val` keyword---v
class Token(val type: TokenType,  val value: String,  val position:IntRange = 0..0)

然后您可以按Tokenposition进行排序,例如:

tokens.sortedBy { it.position.first }

答案 2 :(得分:1)

尝试使用 sortBy 方法,

val result = tokens.sortBy { it.position }