在Scala的嵌套元组列表中的多个元素上使用sortBy

时间:2018-08-08 03:35:51

标签: scala

鉴于Scala中的以下数据类型gem install bundler bundle install cp config/database-gitlab.yml config/database.yml bundle exec rake db:create db:migrate RAILS_ENV=test bundle exec rake test ,我将如何使用sortBy函数对第一个字符串然后第二个字符串进行排序?对于对多个值进行排序有一些答案,但是在下面的情况下呢?

node {
  try {
    stage ('Clone') {
      checkout scm
    }
    stage ('Build') {
      sh "echo 'shell scripts to build project...'"
      sh "echo 'Running ${env.BRANCH_NAME}'"
    }
    stage ('Tests') {
    }
  } catch (err) {
    currentBuild.result = 'FAILED'
      throw err
  }
}

输出应提供以下内容

[((String, String), Double)]

2 个答案:

答案 0 :(得分:4)

由于每个元组((s1, s2), d)中的元素已经按照您想要的排序顺序(从左到右),您可以简单地执行以下操作:

test.sortBy(identity)
// List[((String, String), Double)] = List(((A,c),1.4), ((C,d),80.1), ((D,c),4.3))

或者,只需使用sorted

test.sorted
// List[((String, String), Double)] = List(((A,c),1.4), ((C,d),80.1), ((D,c),4.3))

答案 1 :(得分:0)

您可以按元组进行排序,其中从左到右的每个元素都更相关。

var test = List((("D","c"),4.3), (("A","c"),1.4), (("C","d"),80.1))

test.sortBy{ case ((a,b),c) => (a,b,c) }.foreach(println)