我想在 Scala 中從 2 個串列創建一個嵌套的樹形圖,例如
private val a = List(0, 100000, 500000, 1000000)
private val b = List (0, 5, 25, 50)
我希望嵌套樹圖包含鍵作為串列 a 中的值。這些鍵的值將是另一個樹映射,其中包含鍵作為串列 b 中的值,值作為默認值。為了澄清,這是我希望樹映射默認值為 0 的格式:
{
0:{
0:0,
5:0,
25:0,
50:0
},
100000:{
0:0,
5:0,
25:0,
50:0
},
..}
在 Scala 中是否有一種有效的方法可以做到這一點?
編輯:我想使用相同的邏輯,但在 Scala 中使用 Java 樹圖。有人可以指導我嗎?
uj5u.com熱心網友回復:
這是一種將其變成所需形狀的方法。對于大型資料集,可能有更有效的方法來執行此操作。
a.flatMap(aa => TreeMap(aa -> b.flatMap(bb => TreeMap(bb -> 0)).toMap))
val res50: List[(Int, Map[Int, Int])] =
List(
(0, Map(0 -> 0, 5 -> 0, 25 -> 0, 50 -> 0)),
(100000, Map(0 -> 0, 5 -> 0, 25 -> 0, 50 -> 0)),
(500000, Map(0 -> 0, 5 -> 0, 25 -> 0, 50 -> 0)),
(1000000,Map(0 -> 0, 5 -> 0, 25 -> 0, 50 -> 0))
)
uj5u.com熱心網友回復:
您需要做的就是:
a.iterator.map { aa =>
aa -> b.iterator.map(bb => bb -> 0).to(TreeMap.canBuildFrom)
}.to(TreeMap.canBuildFrom)
你可以在這里看到運行的代碼
uj5u.com熱心網友回復:
并使用 foldLeft
a.foldLeft(TreeMap.empty[Int, TreeMap[Int, Int]]) { (acc, elem) =>
acc (elem -> b.map(bKey => bKey -> 0)
.to(TreeMap.canBuildFrom))
//.to(TreeMap)) //if you use 2.13
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/372777.html
