我搜索了对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 ...
类型的成员任何建议将不胜感激。
答案 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。