例如,如何使用像Scala sortWith
这样的函数点和名称对此数组进行排序:
val arr = Array(
Map("name"->"A","points"->"10"),
Map("name"->"B","points"->"9"),
Map("name"->"C","points"->"8") )
仅按点排序:
arr.sortWith(_.get("points").getOrElse("0").toLong < _.get("points").getOrElse("0").toLong)`
答案 0 :(得分:3)
您可以使用 sortBy 功能:
arr.sortBy( ( m: Map[String, String] ) => ( ( m.getOrElse( "points", "0" ).toLong, m.get( "name" ) ) ) )
上面的代码片段将按点排序(从最小到最大),然后按名称(asc)按字母顺序打破任何关系。
传入 sortBy 函数的函数“comparator”可能会返回一个元组值(一个或多个要排序的判别符)。所以在这种情况下,我回来了(点,名字)