Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java/Scala中以编程方式创建嵌套最多N次的映射的映射的映射_Java_Scala_Dictionary_Hashmap - Fatal编程技术网

如何在Java/Scala中以编程方式创建嵌套最多N次的映射的映射的映射

如何在Java/Scala中以编程方式创建嵌套最多N次的映射的映射的映射,java,scala,dictionary,hashmap,Java,Scala,Dictionary,Hashmap,如何基于值N>1以编程方式创建最多N次的映射的映射 我知道我们可以用 val singleMap = mutable.HashMap[String,Int] 使用以下代码创建地图的地图 val mapOfMap = mutable.HashMap[Map[String,Int],Int] 类似地,我可以在代码中创建静态映射,但是。 如何以编程方式创建地图的地图 在Java中,您可以将其定义为 Map<String, Object> root = new HashMap<

如何基于值N>1以编程方式创建最多N次的映射的映射

我知道我们可以用

val singleMap = mutable.HashMap[String,Int]  
使用以下代码创建地图的地图

val mapOfMap = mutable.HashMap[Map[String,Int],Int]
类似地,我可以在代码中创建静态映射,但是。

如何以编程方式创建地图的地图

在Java中,您可以将其定义为

Map<String, Object> root = new HashMap<>();
Map root=newhashmap();
对于每个级别,您都需要使用强制转换,因为您知道(JVM不知道)可以导航多少级别

Object value = root.get(key);
if (value instanceof Map) {
   Map<String, Object> nested = (Map) value;
}
Object value=root.get(key);
if(映射的值实例){
映射嵌套=(映射)值;
}

简而言之,Java和Scala是静态类型语言。您不能指定一个仅在运行时才知道的类型,并期望编译器处理此问题。

为什么要这样做?听起来像是要创建一个映射树。@EdwardPeters我需要跟踪子类型及其计数。这些子类型可以有自己的子类型。我也在考虑使用Tree。但问题是,有可能像这样动态定义映射吗?Scala是静态类型的。您想要做的看起来像是将动态类型声明为静态类型。这显然没有道理。您必须放弃映射的特定级别上的类型信息:
val m:map[map[String,Int],map[\u,\u]]=map()
No,正如艾文所说,Java/Scala是静态类型的。。。我认为不可能以编程方式构建新类型。但是,我也不认为那是你真正想做的。。。如果我了解你正在研究的问题,我可能会帮助你找到更好的方法。