我是Java的新手(对于强类型不太熟悉)我有一个接受HashMap的方法。这个hashmap中的一个键包含一个键,它有一个值的hashmap,它也指向一个hashmap等,直到我们到达一个字符串:y
HashMap1->HashMap2->HashMap3->HashMap4->String
我试图按如下方式访问它:
HashMap1
.get("aKey")
.get("anotherKey")
.get("yetAnotherKey")
.get("MyString");
但后来我收到了错误,
对象没有方法“get(String)
这是方法,简化:
public HashMap<String, HashMap> getMyString(Map<String, HashMap> hashMap1) {
String myString = hashMap1
.get("aKey")
.get("anotherKey")
.get("yetAnotherKey")
.get("MyString");
// do something with myString.
return hashMap1;
}
如何正确定义方法和参数以轻松访问嵌套元素?
谢谢,
答案 0 :(得分:1)
您拨打的.get
电话太多了。可能最后一个不需要。
您是否可以使用任意数量的字符串字段创建class CompoundKey
并将其用作密钥?它会简化你的设计。
要在Java中正确使用它,您需要覆盖hashCode
和equals
方法。
答案 1 :(得分:1)
简单就是那个
HashMap1.get("aKey") -- > return hashMap2
.get("anotherKey") --> return hashMap3
.get("yetAnotherKey") --> return hashMap4
.get("MyString"); --> return String
添加部分有问题。
现在你有如下结构。
hashmap1 --> hashmap2 --> String
String myString = hashMap1.get("aKey").get("MyString");
应该是这样的。
答案 2 :(得分:0)
首先应该使用不实现的接口,因此尽可能使用Map
(而不是HashMap)。
其次,你应该修复你的泛型并使用所有级别。现在,编译器可以帮助您并可能显示您的错误。
// i suppose you want to return a String, at least the method name tells it
public String getMyString(Map<String, Map<String, Map<String, Map<String, String>>>> hashMap1) {
String myString = hashMap1
.get("aKey")
.get("anotherKey")
.get("yetAnotherKey")
.get("MyString");
return myString;
}
但我建议你使用不同的数据结构。