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的例子吗