Java 我的ArrayList正在覆盖以前的数据
我试图用simpleJava 我的ArrayList正在覆盖以前的数据,java,arraylist,Java,Arraylist,我试图用simpleArrayList示例来解决我的其他代码的一些问题,但是这个简单的代码给出了错误的输出 我创建了一个Hashmap的Arraylist,在该Hashmap中放入3个键/值对,然后将该Hashmap放入Arraylist,如下所示 public class SortData { public static void main (String [] args){ ArrayList<HashMap<String, String>> my
ArrayList
示例来解决我的其他代码的一些问题,但是这个简单的代码给出了错误的输出
我创建了一个Hashmap的Arraylist,在该Hashmap中放入3个键/值对,然后将该Hashmap放入Arraylist,如下所示
public class SortData {
public static void main (String [] args){
ArrayList<HashMap<String, String>> myArrayList = new ArrayList<HashMap<String,String>>();
HashMap<String, String> myHashMap = new HashMap<String, String>();
myHashMap.put("title", "first Title");
myHashMap.put("date", "This is date");
myHashMap.put("number", "5");
myArrayList.add(0, myHashMap);
为什么会覆盖ArrayList
中以前的值?
我都试过了
myArrayList.add(Hashmap())
和myArrayList.add(int-index,Hashmap())
但是输出与您添加的
ArrayList
添加对HashMap
的引用相同,而不是副本。将相同的HashMap
添加到ArrayList
3次。每次添加后,您都会使用更多的put
调用来更改内容,这些调用会由于同一个键而覆盖先前存在的值
myArrayList[ o , o , o ]
| | |
+---+ |
| |
+-------+
|
v
myHashMap
要添加不同的内容,请通过运行
myHashMap = new HashMap<String, String>();
ArrayList
添加对已添加的HashMap
的引用,而不是副本。将相同的HashMap
添加到ArrayList
3次。每次添加后,您都会使用更多的put
调用来更改内容,这些调用会由于同一个键而覆盖先前存在的值
myArrayList[ o , o , o ]
| | |
+---+ |
| |
+-------+
|
v
myHashMap
要添加不同的内容,请通过运行
myHashMap = new HashMap<String, String>();
您误解了对象引用和方法调用的工作原理。您认为自己创建了多少HashMap?(提示:查找'new'关键字)。我已经创建了一个
hashmap
,然后覆盖了中的值it@SotiriosDelimanolis,你能把我链接到任何我可以了解这些概念的文章吗?你误解了对象引用和方法调用的工作原理。你认为你已经创建了多少HashMap?(提示:查找'new'关键字)。我已经创建了一个hashmap
,然后覆盖了中的值it@SotiriosDelimanolis,请将我链接到任何我可以了解这些概念的文章中好吗?谢谢,很抱歉问了一个愚蠢的问题,但是你说“由于相同的键,它会覆盖先前存在的值。”如果它重写了预先存在的值,为什么它没有更新?HashMap没有“更新”。例如,在第二次添加后,您有{“title”->“second title”,“date”->“这是第二次日期”,“number”,“2”}
。在上一次add
之后,3次put
调用将其更改为{“title”->“Third title”,“date”->“This This This Third date”,“number”,“7”}
。非常简单的错误,感谢这帮助了我:)谢谢,很抱歉问了一个愚蠢的问题,但你说“这会覆盖先前存在的值,因为相同的键。”如果它重写了预先存在的值,为什么它没有更新?HashMap没有“更新”。例如,在第二次添加后,您有{“title”->“second title”,“date”->“这是第二次日期”,“number”,“2”}
。在上一次add
之后,3次put
调用将其更改为{“title”->“Third title”,“date”->“This This This Third date”,“number”,“7”}
。非常简单的错误,感谢这对我的帮助:)
myArrayList[ o , o , o ]
| | +-> HashMap
| |
| +-----> HashMap
|
+---------> HashMap