HashMap数据被意外删除

Cha*_*aos -1 java collections json hashmap

我正在创建一个HashMap,如下所示:

private HashMap <String, JSONArray> HiveMap;
HiveMap = new HashMap <String, JSONArray>();
Run Code Online (Sandbox Code Playgroud)

还有一个私有类变量来存储一些计算数据,这些数据将在计算完成后放入HashMap:

private JSONArray hiveList;
Run Code Online (Sandbox Code Playgroud)

在计算hiveList之后,我将hiveList放入创建的HashMap(HiveMap)中:

HiveMap.put(hiveNode,hiveList);
Run Code Online (Sandbox Code Playgroud)

当我现在打印出HiveMap时,我得到的输出是预期的,包含字段hiveNodehiveListHashmap中的现有字段.<"hiveNode":"hiveList">

完成后,我假设我放入HashMap的数据hiveList将继续存在,所以我清除了hiveList数组hiveList.clear();

但是当我在清除hiveList之后打印Hashmap时,我发现来自hiveList的数据也从HashMap中消失了.

清除hiveList后打印HashMap会导致: <"hiveNode": >

我不明白这种行为,如果有人能对此有所了解,我将不胜感激.

kih*_*eru 8

错误是这样的:

完成此操作后,我假设我从hiveList放入HashMap的数据将继续存在,所以我使用hiveList.clear()清除了hiveList数组;

传递给哈希映射的是对列表的引用,而不是它的副本.

最简单的解决方法是创建一个新实例而不是清除它.或者,您可以制作副本,并将其放在地图中.