我想對一個包含普通串列的串列進行排序,例如:
List("5", "3", "3", "6", "3", "5")
并首先按最高元素對其進行排序并將其變成如下所示:
List("3", "5", "6")
我嘗試過按照以下方式做一些事情
val key = list.groupBy(indentity).mapValues(_.size)
val newList = key.KeySet.toList
但這并沒有最終按順序對串列進行排序(我認為是因為 KeySet 首先隨機排序,但不完全確定)。謝謝!
uj5u.com熱心網友回復:
所以根據出現次數排序?
計算出現次數:
val occ =
List("5", "3", "3", "6", "3", "5")
.groupBy(identity)
.mapValues(_.size)
//Map(5 -> 2, 6 -> 1, 3 -> 3)
并根據occ:
occ
.toList
.sortBy { case (value, occ) => -occ }
.map(_._1)
//List(3, 5, 6)
uj5u.com熱心網友回復:
您可以在生成串列之前對地圖元素進行排序:
val list = List("5", "3", "3", "6", "3", "5")
val key = list.groupBy(identity)
.view
.mapValues(_.size)
.toSeq
.sortBy(_._2)(Ordering.Int.reverse)
.map(_._1)
.toList
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/413846.html
標籤:
