我转换了这个:
import scala.collection.JavaConverters._
import scala.collection.JavaConverters._
val list:java.util.List[java.util.Map[String, Object]] = new java.util.ArrayList[java.util.Map[String, Object]]()
val map1:java.util.Map[String, AnyRef] = new java.util.HashMap[String,AnyRef]()
map1.put("payout", 3.asInstanceOf[AnyRef])
list.add(map1)
val map2:java.util.Map[String, AnyRef] = new java.util.HashMap[String, AnyRef]()
map2.put("payout", 2.asInstanceOf[AnyRef])
list.add(map2)
val map3:java.util.Map[String, AnyRef] = new java.util.HashMap[String, AnyRef]()
map3.put("payout", 2.asInstanceOf[AnyRef])
list.add(map3)
val map4:java.util.Map[String, AnyRef] = new java.util.HashMap[String, AnyRef]()
map4.put("payout", 1.asInstanceOf[AnyRef])
list.add(map4)
println(list)
val result = list.asScala
//result Buffer({payout=3}, {payout=2}, {payout=2}, {payout=1})
我希望:
list.asScala.groupBy(_(“payout”))。toList保存其排序(按付款排序)
但.toList.sortBy(_._1)
抛出错误:
错误:没有为java.lang.Object定义隐式排序。
val result = list.groupBy(_("payout")).toList.sortBy(_._1)
答案 0 :(得分:3)
这给出了结果,但我不知道它是否是你想要的:
val result = list.asScala.map(_.asScala).groupBy(_("payout")).toList.sortWith(_._1.asInstanceOf[Int] > _._1.asInstanceOf[Int])
我添加了地图( .asScala),以便将您的java地图转换为scala地图。 group by value是一个没有排序的java.lang.Object;使用sortWith( ._ 1.asInstanceOf [Int]> _._ 1.asInstanceOf [Int])我将它转换为Int以对其进行排序。如果使用其他对象,这当然会崩溃,但是没有办法订购一个你不了解的对象。