2017-07-16 103 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