2017-07-16 68 views
0

我有这个令牌对象:科特林 - 排序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 } 

不过,我使用它关键字后没有访问对象,所以位置红色突出显示。

有什么建议吗?

回答

1

positionparameter而非property,使它为propertyprimary constructor通过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) 

THEN你可以通过你的Token有几分例如:position,例如:

tokens.sortedBy { it.position.first } 
+0

哦,愚蠢的错误。谢谢:) – OhMad

+0

@Rechunk一点也不。这是我的荣幸, :) –

1

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

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