1

我搜索了排序 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 类型的成员...

任何建议将不胜感激。

4

1 回答 1

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。

于 2013-10-01T23:53:46.950 回答