使用java更新ArrayList/HashMap中的元素

kre*_*rex 2 java arraylist hashmap

我正在为uni做一些课程,我真的应该知道这一点,但我不确定如何更新存储在HashMap中的对象.

我有一个抽象的'User'类,它扩展为'Customer'和'Staff'类,其实例存储在名为'mapUsers'的HashMap中.

我认为可以这样做的方法是将要修改的元素保存到临时 'User'对象中,在这个临时实例上我可以以任何必要的方式修改Object.

我真正的问题是,这将更新存储在HashMap中的对象,还是我必须删除存储在HashMap中的元素并替换为修改后的临时实例.

有没有更简单的方法来做到这一点,我想也许是这样的

HashMap.get(index).performOperation();
Run Code Online (Sandbox Code Playgroud)

类似的东西,我可以在不删除元素的情况下执行操作.

Tud*_*dor 11

由于您HashMap持有引用,执行此操作:

Person p = new Person();
p.setName("John");
hashMap.put(1, p);
p.setName("Jack");
Run Code Online (Sandbox Code Playgroud)

会在里面更改名称HashMap,因为两个引用都指向同一个东西.

或者,假设p已经在HashMap:

Person p = hashMap.get(1);
p.setName("Jack");
Run Code Online (Sandbox Code Playgroud)

  • 那么`hashMap.get(1).setName("Jack")'`,这就是我认为OP正在寻找的东西. (3认同)