使用以下代码后,我从Map
中删除了List
中的对象,但我希望将其保留在Map
中:
ArrayList<object> myList= new ArrayList<>();
Map<String, ArrayList<object>> map = new HashMap<String, ArrayList<object>>();
myList.add(object);
map.put(key1,myList);
map.get(key1); // return [object]
myList.remove(get(index));
map.get(key1); // return []
答案 0 :(得分:0)
您必须在列表副本上执行删除操作:
List<object> myList2 = new ArrayList<>(myList);
myList2.remove(get(index));
答案 1 :(得分:0)
您似乎正在将对象从列表中发送到地图,即通过引用。您可能希望尝试创建具有相同值的新对象并将其发送到地图,而不是使用相同的对象引用。这可能是你的问题。
答案 2 :(得分:0)
ArrayList<object> myList = new ArrayList<>();
Map<String, ArrayList<object>> map = new HashMap<String, ArrayList<object>>();
myList.add(object);
map.put(key1, new ArrayList<>(myList));
map.get(key1);
myList.remove(get(index));
map.get(key1);
答案 3 :(得分:0)
添加列表后,地图中的列表和单个列表具有相同的内存地址。因此,单个列表中的更改也将反映在地图中列表的更改中。
因此,在将列表添加到地图之前,您必须创建列表的副本。
或者另一种解决方案是,您可以在将列表添加到地图后克隆地图。
答案 4 :(得分:0)
这意味着你想要完成的是获取没有该对象离开列表的对象。
只需使用
ArrayList.get(indexOfObjectToGet);
//not
ArrayList.remove(indexOfObjectToGet);