Kotlin – 基于对象属性对MutableList进行排序

我有这个令牌对象:

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关键字后,我无法访问该对象,所以位置以红色突出显示。

有什么建议么?

position是一个参数而不是一个属性 ,通过val / var关键字将其设置为主要构造函数的属性 ,例如:

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

那么你可以按position排序你的Token ,例如:

 tokens.sortedBy { it.position.first } 

另一个观察是, sortedBy返回列表的一个排序副本。 如果你想排序你的可变列表,你应该使用sortBy函数:

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