首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对数组[(int,int)]进行排序,以便在scala中显示列表

对数组[(int,int)]进行排序,以便在scala中显示列表
EN

Stack Overflow用户
提问于 2018-07-12 18:55:58
回答 0查看 546关注 0票数 3

我目前正在使用Scala开发Spark框架。我有一个数组C: Array( int,int),我想根据映射A:Mapint,int的顺序对它进行排序。代码如下:

代码语言:javascript
复制
line 1:import scala.util.Sorting
line 2: object Test {
line 3:     def main(args: Array[String]){
line 4:     val A = Map(5 -> 41, 1 -> 43, 2 -> 41, 3 -> 59,4 -> 51 )
line 5:     val B= A.toList.sortBy(x => x._2)
line 6:     B.foreach(println)
line 7:     val C=Array((1,15),(2,9),(3,6),(4,3),(5,4))
line 8:     Sorting.quickSort(C)(Ordering[(Int)].on(k => (A.get(k._1).get)))
line 9:     for(j <- 0 to C.length-1){
line 10:        println(C(j))
line 11:       }
line 12:    }
line 13: }

当我根据值部分(第5行)对A进行排序并打印时,得到的输出(第6行)如下所示:

代码语言:javascript
复制
(5,41)
(2,41)
(1,43)
(4,51)
(3,59)

但是当我根据A的关键部分对C进行排序时(第8行),我得到以下输出(第9-11行)

代码语言:javascript
复制
(2,9)
(5,4)
(1,15)
(4,3)
(3,6)

因为(5,41)和(2,41)具有相同的值,并且在B中(5,41)出现在(2,41)之前。但是按照A的关键部分对C排序后,为什么2会出现在5之前,为什么B和C的结果不一致?

请建议我在代码中的更改,以获得B和C的统一结果。我希望C为:(5,4) (2,9) (1,15) (4,3) (3,6)

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51303848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档