按位置排序ListBuffer

fre*_*low 4 sorting scala position traits

不幸的是,scala.util.parsing.input.Position没有延伸Ordering[Position].

ListBuffer根据位置对错误进行排序,请使用以下代码:

semanticErrors.sortBy(_.pos)(new Ordering[Position] {
  def compare(x: Position, y: Position): Int = x.line - y.line 
}).toList
Run Code Online (Sandbox Code Playgroud)

我相信这可以做得更优雅.但是怎么样?例如,我注意到了Position工具<.是否有一个通用的包装器将支持的内容<转换为Ordering


有趣的是,转换到List第一个时,这似乎要容易得多:

semanticErrors.toList.sort((a, b) => a.pos < b.pos)
Run Code Online (Sandbox Code Playgroud)

但这可能不是最有效的解决方案.一个就地的ListBuffer理想选择.

dre*_*xin 8

您可以ListBuffer使用以下sortWith方法对a 进行排序:

semanticErrors.sortWith(_.pos < _.pos)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不是就地排序.没有任何收集品种. (3认同)