Java 操作存储为HashMap中的值的ArrayList

Java 操作存储为HashMap中的值的ArrayList,java,arraylist,Java,Arraylist,我有一个HashMap,它将Id存储为键,将ArrayList存储为值。对于一个特定的键,我想获得相应的ArrayList,并在该ArrayList中操作一个IEntity类型的元素 我的问题是,当我更新元素的属性时,它是否也会反映在HashMap中的ArrayList中?或者我必须删除列表,替换列表中的元素,然后再次插入该键的列表,以便在HashMap中查看反映的值。我知道Java是按值传递的,但要理解这个场景有点困难 下面是我的代码。谢谢 ArrayList<IEntity> l

我有一个HashMap,它将Id存储为键,将ArrayList存储为值。对于一个特定的键,我想获得相应的ArrayList,并在该ArrayList中操作一个IEntity类型的元素

我的问题是,当我更新元素的属性时,它是否也会反映在HashMap中的ArrayList中?或者我必须删除列表,替换列表中的元素,然后再次插入该键的列表,以便在HashMap中查看反映的值。我知道Java是按值传递的,但要理解这个场景有点困难

下面是我的代码。谢谢

ArrayList<IEntity> list = myMap.get(id);
Iterator<IEntity> itr = list.iterator();

        while(itr.hasNext()){               
            IEntity element = itr.next();
            if(element.checkSomeProperty() == false){
                element.setThatProperty(true);
// will above statement reflect the change in ArrayList stored in HashMap as well?
            }
        }
ArrayList list=myMap.get(id);
迭代器itr=list.Iterator();
而(itr.hasNext()){
IEntity元素=itr.next();
if(element.checkSomeProperty()==false){
元素。setThatProperty(true);
//上述语句是否也反映了HashMap中存储的ArrayList中的更改?
}
}

Java对所有变量使用引用变量,包括
映射中使用的实例变量。因此,您不需要重新插入它(除非您的映射克隆了对象,但是
集合
框架中的常规类不克隆对象)。

Java对所有变量使用引用变量,包括
映射
中使用的实例变量。因此,您不需要重新插入它(除非您的映射克隆了对象,但是
集合
框架中的常规类没有克隆对象)。

元素也将在
HashMap
中更新。这是因为它持有对
ArrayList
的引用,而ArrayList又包含元素。即使以某种方式修改了元素,映射仍然指向相同的列表,该列表仍然保持并指向相同(现在已修改)的元素。

元素也将在
HashMap
中更新。这是因为它持有对
ArrayList
的引用,而ArrayList又包含元素。即使以某种方式修改了元素,映射仍然指向相同的列表,该列表仍然保存并指向相同(现在已修改)的元素。

容器包含对其元素的引用,因此更改元素也会立即反映在集合中。由于此属性,您永远不应该对
映射
中用作键的任何对象进行变异,因为容器包含对其元素的引用,因此更改元素也会立即反映在集合中。由于此属性,您不应该对
贴图
集合
中用作键的任何对象进行变异