对类型化的Scala HashMap进行排序

时间:2013-10-01 22:51:11

标签: scala

我搜索了对scala HashMap进行排序的答案。 这是

opthash.toSeq.sortBy(_._1) 

我只想按键排序,因此上述解决方案应该适用。

但是,我的情况是上述解决方案导致错误:

def foo (opthash : HashMap[Int,String]) = {
    val int_strin_list = opthash.toSeq.sortBy(_._1);
    "return something"
}

我收到以下错误消息:

value sortBy is not a member of Seq[(Int, String)]

我错过了什么吗?我很确定sortBy是Seq ...

类型的成员

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

确保使用Scala HashMap而不是Java HashMap。您确定没有误读错误消息吗?

scala> import java.util.HashMap
import java.util.HashMap

scala> def foo (opthash : HashMap[Int,String]) = {
     |     val int_strin_list = opthash.toSeq.sortBy(_._1);
     |     "return something"
     | }
<console>:13: error: value toSeq is not a member of java.util.HashMap[Int,String]
           val int_strin_list = opthash.toSeq.sortBy(_._1);
                                        ^

正确的方法是:

scala> import scala.collection.immutable.HashMap
import scala.collection.immutable.HashMap

scala> def foo (opthash : HashMap[Int,String]) = {
     |     val int_strin_list = opthash.toSeq.sortBy(_._1);
     |     "return something"
     | }
foo: (opthash: scala.collection.immutable.HashMap[Int,String])String

如果是这种情况,也可以使用可变的HashMap。