Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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_Java_Hashmap - Fatal编程技术网

Java 在数组中存储hashMap

Java 在数组中存储hashMap,java,hashmap,Java,Hashmap,我想将HashMaps存储在一个数组中。我尝试只制作一个HashMap,用特定信息填充它,并将其存储到数组的一个元素中。然后我想用不同的信息覆盖Hashmap中的信息,然后将其存储到该数组的不同元素中。我想这样做多次。做这件事最好的方法是什么 现在我有: HashMap[][] location = new HashMap[columns][rows]; HashMap <String, String> area = new HashMap <String, String>

我想将HashMaps存储在一个数组中。我尝试只制作一个HashMap,用特定信息填充它,并将其存储到数组的一个元素中。然后我想用不同的信息覆盖Hashmap中的信息,然后将其存储到该数组的不同元素中。我想这样做多次。做这件事最好的方法是什么

现在我有:

HashMap[][] location = new HashMap[columns][rows];
HashMap <String, String> area = new HashMap <String, String> ();

public Map() {

    area.put("description", "You are in the upper left\n");
    location[0][0] = area;

    area.put("description", "You are in the upper middle\n");
    location[1][0] = area;
}
HashMap[][]位置=新的HashMap[列][行];
HashMap区域=新的HashMap();
公共地图(){
放置(“描述”,“您在左上角\n”);
位置[0][0]=面积;
area.put(“description”,“您在中上\n”);
位置[1][0]=面积;
}

问题是,现在位置[0][0]和位置[1][0]都有相同的描述。

您需要创建一个不同的
地图实例,以存储在每个位置

 public Map() {      

   Map<String, String> area = new HashMap<String, String>();
   area.put("description", "You are in the upper left\n");     
   location[0][0] = area;      

   area = new HashMap<String, String>();
   area.put("description", "You are in the upper middle\n");    
   location[1][0] = area; } 
publicmap(){
映射区域=新的HashMap();
放置(“描述”,“您在左上角\n”);
位置[0][0]=面积;
area=新HashMap();
area.put(“description”,“您在中上\n”);
位置[1][0]=面积;}

位置[0][0]和位置[1][0]的指针指向同一区域

你应该这样做

location[0][0] = createArea("You are in the upper left\n");
location[1][0] = createArea("You are in the upper middle\n");



HashMap <String, String> createArea(String desc){
    HashMap <String, String> area = new HashMap <String, String> ();
    area.put("description", desc);
    return area;
}
location[0][0]=createArea(“您在左上角\n”);
位置[1][0]=createArea(“您位于中上部\n”);
HashMap createArea(字符串描述){
HashMap区域=新的HashMap();
区域放置(“说明”,描述);
返回区;
}

成功了!谢谢我喜欢它有多简单。我知道我需要制作一个新的HashMap,但我无法想象代码是什么样子。方法是关键的。您应该对区域使用Map而不是HashMap。这是一个很好的实践,因为将来更改实现会更容易。我不确定我的领域和你的领域是否相同。我用面积来表示地图上的位置,而不是数学上的。在我的例子中使用HashMap更好吗?你把Map的字面意思和Java的Map接口混淆了。我的意思是您应该将area变量初始化为Map area=newhashmap();这将有助于你在将来,当你想转移到LinkedHashMap,Treemap或任何其他风格的地图时,我没有想到这一点。事实上,我甚至不知道还有其他人存在。谢谢。那么我建议你看看它们,找出彼此之间的恩惠。在选择数据结构之前,最好有一个理由。:)