gpt4 book ai didi

java - 在 Scala 中,给定长度为 N 的列表,创建一个长度为 N 的嵌套 HashMap

转载 作者:行者123 更新时间:2023-11-30 02:56:49 26 4
gpt4 key购买 nike

如何在给定值列表的情况下创建嵌套 HashMap ?

List(1,2,3,4).toMap => Map(1 -> Map(2 -> Map(3 -> 4)))

之后,如何将其与另一张 map 合并?

List(1,2,3,4).toMap => Map(1 -> Map(2 -> Map(3 -> 4)))
List(1,2,3,5).toMap => Map(1 -> Map(2 -> Map(3 -> 5)))
Map(1 -> Map(2 -> Map(3 -> List(4,5)))

我基本上想表演

List(List(1,2,3,8), List(2,3,7,9)).groupBy(x => x(0)).
groupBy(x => x(1)).
groupBy(x=>x(2))
...
...
.groupBy(x=>x(n))

其中 N 是内部列表中值的长度。

最佳答案

我们可以毫不费力地实现接近您第一个要求的目标。

scala> List(1,2,3,4).foldRight(Map[Int,Map[Int,_]]()){case (a,b) => Map(a->b)}
res0: scala.collection.immutable.Map[Int,scala.collection.immutable.Map[Int, _]]
= Map(1 -> Map(2 -> Map(3 -> Map(4 -> Map()))))

但我认为没有足够的信息来完全理解您的第二个请求。例如:如何合并以下列表?

List(1,2,3,8)
List(2,3,7,9)
<小时/>

更新

根据您的评论,听起来最好的方法可能是在嵌套之前合并列表。根据您的要求,可以通过多种不同的方式来完成此操作。

例如:如果顺序很重要(看起来也很重要),那么列表可以轻松排序吗?如果您使用 Int 那么这很简单。

def nest[A](input: List[A]): Map[A, Map[A,_]] =
input.foldRight(Map[A,Map[A,_]]()){case (a,b) => Map(a->b)}

val lst1 = List(1,2,3,8)
val lst2 = List(2,3,7,9)
val result = nest( (lst1 ++ lst2).distinct.sorted )
//result: Map(1 -> Map(2 -> Map(3 -> Map(7 -> Map(8 -> Map(9 -> Map()))))))

但我怀疑这些简单的示例可能会偏离您的实际用例。

关于java - 在 Scala 中,给定长度为 N 的列表,创建一个长度为 N 的嵌套 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37018890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com