【问题标题】:Sort Array of Maps by more than one value按多个值对地图数组进行排序
【发布时间】:2013-04-28 02:46:43
【问题描述】:

例如,我如何使用 Scala 的 sortWith 之类的函数按 pointsname 对这个数组进行排序:

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)`

【问题讨论】:

    标签: scala sorting multiple-columns


    【解决方案1】:

    您可以使用 sortBy 功能:

    arr.sortBy( ( m: Map[String, String] ) => ( ( m.getOrElse( "points", "0" ).toLong, m.get( "name" ) ) ) )
    

    上面的 sn-p 将首先按点排序(从小到大),然后打破任何关系,然后按名称的字母顺序(asc)。

    传递给 sortBy 函数的函数“比较器”可能会返回一个元组值(一个或多个用于排序的鉴别器)。所以在这种情况下,我要返回 (points, name)

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多