Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 如何将嵌套集合声明为类型(如HashMap中的HashMap)?_Java_Generics_Collections_Hashmap - Fatal编程技术网

Java 如何将嵌套集合声明为类型(如HashMap中的HashMap)?

Java 如何将嵌套集合声明为类型(如HashMap中的HashMap)?,java,generics,collections,hashmap,Java,Generics,Collections,Hashmap,我想声明一个HashMap,另一个HashMap作为其值类型。我有这个代码,但它不起作用: private HashMap<String, String> ContactData= new HashMap<String, String>(); private HashMap<String, String> Messages= new HashMap<String, String>(); private HahsMap<String, Mess

我想声明一个
HashMap
,另一个
HashMap
作为其值类型。我有这个代码,但它不起作用:

private HashMap<String, String> ContactData= new HashMap<String, String>();
private HashMap<String, String> Messages= new HashMap<String, String>();
private HahsMap<String, Messages> MessegesStructure= new HashMap<String, Messages>();

这段代码无法编译。如何使其工作?

您在代码中所做的操作在语义和语法上都是不正确的。我建议您学习Java的基础知识,因为您似乎不知道什么是类型和声明

声明变量时,必须使用SomeType。使用引用(或任何其他)变量作为类型没有任何意义,也不会被编译。引用变量是一个
变量
,它引用了对象,用另一个变量声明(或定义)变量不是有效的逻辑


要回答关于将类型嵌入泛型类型的问题:是的,您可以将任何类型作为
声明

2级深度HashMap,其值类型为另一个HashMap,如下所示:

HashMap<String, HashMap<String, HashMap>> twoLevelDepthEmbeddedHashMap 
= new HashMap<String, HashMap<String, HashMap>>();
HashMap<String, HashMap<String, HashMap<String, String>>> threeLevelDepthEmbeddedHashMap
= new HashMap<String, HashMap<String, HashMap<String, String>>>();
HashMap TwoLevelDepthemmedHashMap
=新HashMap();
3级深度HashMap,其值类型是另一个HashMap,其值类型为HashMap,如下所示:

HashMap<String, HashMap<String, HashMap>> twoLevelDepthEmbeddedHashMap 
= new HashMap<String, HashMap<String, HashMap>>();
HashMap<String, HashMap<String, HashMap<String, String>>> threeLevelDepthEmbeddedHashMap
= new HashMap<String, HashMap<String, HashMap<String, String>>>();
HashMap三层主题化HashMap
=新HashMap();

注1:如果您是为了学习目的而尝试此方法,则可以;然而,在现实生活中尽量避免这种嵌入设计


注意2:请不要将变量名的首字母大写。根据PascalCase,变量不正确。

您在代码中所做的操作在语义和语法上都不正确。我建议您学习Java的基础知识,因为您似乎不知道什么是类型和声明

声明变量时,必须使用SomeType。使用引用(或任何其他)变量作为类型没有任何意义,也不会被编译。引用变量是一个
变量
,它引用了对象,用另一个变量声明(或定义)变量不是有效的逻辑


要回答关于将类型嵌入泛型类型的问题:是的,您可以将任何类型作为
声明

2级深度HashMap,其值类型为另一个HashMap,如下所示:

HashMap<String, HashMap<String, HashMap>> twoLevelDepthEmbeddedHashMap 
= new HashMap<String, HashMap<String, HashMap>>();
HashMap<String, HashMap<String, HashMap<String, String>>> threeLevelDepthEmbeddedHashMap
= new HashMap<String, HashMap<String, HashMap<String, String>>>();
HashMap TwoLevelDepthemmedHashMap
=新HashMap();
3级深度HashMap,其值类型是另一个HashMap,其值类型为HashMap,如下所示:

HashMap<String, HashMap<String, HashMap>> twoLevelDepthEmbeddedHashMap 
= new HashMap<String, HashMap<String, HashMap>>();
HashMap<String, HashMap<String, HashMap<String, String>>> threeLevelDepthEmbeddedHashMap
= new HashMap<String, HashMap<String, HashMap<String, String>>>();
HashMap三层主题化HashMap
=新HashMap();

注1:如果您是为了学习目的而尝试此方法,则可以;然而,在现实生活中尽量避免这种嵌入设计


注意2:请不要将变量名的首字母大写。根据,变量的
PascalCase
不正常。

由于使用对象作为类型,因此出现错误

private HashMap<String, Messages> MessegesStructure= new HashMap<String, Messages>();

注意:请尝试以小写字母开头命名对象。

由于使用对象作为类型,因此出现错误

private HashMap<String, Messages> MessegesStructure= new HashMap<String, Messages>();

注意:尝试以小写字母开头命名对象。

您可以使用扩展名来介绍类型

    class Messages extends HashMap<String, String> {};
    HashMap<String, Messages> messageStructure = new HashMap<>();
印刷品

someMessagesKey {someOtherKey=someOtherValue, someKey=someValue}
另一方面,我更喜欢作文,也就是说

    class Messages {
        private HashMap<String, String> messages = new HashMap<>();
        
        public void put(String key, String value) {
            messages.put(key, value);
        }

        @Override
        public String toString() {
            return "Messages [messages=" + messages + "]";
        }
    }
    
    HashMap<String, Messages> messageStructure = new HashMap<>();
类消息{
私有HashMap消息=新HashMap();
公共void put(字符串键、字符串值){
messages.put(键、值);
}
@凌驾
公共字符串toString(){
返回“Messages[Messages=“+Messages+”]”;
}
}
HashMap messageStructure=新建HashMap();

因为这将允许以后更改“Messages”实现的底层数据结构。

您可以使用扩展来引入该类型

    class Messages extends HashMap<String, String> {};
    HashMap<String, Messages> messageStructure = new HashMap<>();
印刷品

someMessagesKey {someOtherKey=someOtherValue, someKey=someValue}
另一方面,我更喜欢作文,也就是说

    class Messages {
        private HashMap<String, String> messages = new HashMap<>();
        
        public void put(String key, String value) {
            messages.put(key, value);
        }

        @Override
        public String toString() {
            return "Messages [messages=" + messages + "]";
        }
    }
    
    HashMap<String, Messages> messageStructure = new HashMap<>();
类消息{
私有HashMap消息=新HashMap();
公共void put(字符串键、字符串值){
messages.put(键、值);
}
@凌驾
公共字符串toString(){
返回“Messages[Messages=“+Messages+”]”;
}
}
HashMap messageStructure=新建HashMap();

因为这将允许以后更改“消息”实现的底层数据结构。

在提问时请使用清晰的英语;然后,在发布代码之前,至少在IDE中尝试一下代码;最后-是的,您可以将任何集合嵌入到任何其他集合中。您好,谢谢,很明显我在IDE中尝试了我的代码,我给出了错误,我问这个问题的原因是。英语不是我的第一语言,显然,我不能流利地说英语,但我试图提高我的口语技能。你能为我举一个HashMap中的HashMap的例子吗?在这种情况下,你应该上传你的代码和错误消息。通过这种方式,你将告诉观众到目前为止你做了什么,问题是什么,你的目标是什么。看看我刚才给你写的答案。我已经更新了你的问题,它不清楚,不可理解,语法也不正确。如果我的答案对你有帮助的话,你可以投我的赞成票。是的,我理解,谢谢。当你问问题时,请使用清晰的英语;然后,在发布代码之前,至少在IDE中尝试一下代码;最后-是的,您可以将任何集合嵌入到任何其他集合中。您好,谢谢,很明显我在IDE中尝试了我的代码,我给出了错误,我问这个问题的原因是。英语不是我的第一语言,显然,我不能流利地说英语,但我试图提高我的口语技能。你能举一个HashMap的例子吗