首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >排序对象列表的最简单方法

排序对象列表的最简单方法
EN

Stack Overflow用户
提问于 2012-03-17 23:58:04
回答 3查看 22.9K关注 0票数 18

我有一个类型为A的对象列表。在第一次迭代中,我为每个对象分配了一个双精度值0

目前,我使用一个包装类来存储对象和它的x值,以生成一个可比较的列表。

Scala是否提供了一种数据类型,允许我这样做:

代码语言:javascript
复制
 var result = new SortedList[Double, A]
 result.insert(x,a)
 result.insert(x1,a1)
 result.insert(x2,a2)

然后

代码语言:javascript
复制
  println(result.mkString)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-18 00:13:13

实际上,使用普通的Scala列表和它们的sortBy方法就可以很容易地做到这一点。下面是一个简短的REPL会话,展示了如何:

代码语言:javascript
复制
scala> class A(val value: Double) { override def toString = "A:" + value }
defined class A

scala> List(new A(6), new A(1), new A(3)) sortBy (_.value)
res0: List[A] = List(A:1.0, A:3.0, A:6.0)
票数 33
EN

Stack Overflow用户

发布于 2012-03-18 07:22:36

使用元组而不是创建新的包装类。

代码语言:javascript
复制
List((1.2, "a1"), (0.1, "a2"), (0.9, "a3")).sorted
// List((0.1,a2), (0.9,a3), (1.2,a1))
票数 11
EN

Stack Overflow用户

发布于 2013-03-19 08:25:55

我是这样走的。用于获取hashmap中的前c个单词:

代码语言:javascript
复制
  def getTopCWordsDeclarative(input: mutable.HashMap[String, Int], c: Int): Map[String, Int] = {
    val sortedInput = input.toList.sortWith(_._2 > _._2)
    sortedInput.take(c).toMap
  }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9751434

复制
相关文章

相似问题

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