我有两个 HashMap 定义如下:
HashMap EventTable = new HashMap();
HashMap MainTable = new HashMap ();
现在,假设我在 EventTable 中插入一些数据:
EventTable.put("name", "Test Event Name");
然后,假设我们将 EventTable 插入 MainTable:
MainTable.put("table", EventTable);
然后打印出 MainTable:
{table={name=Test Event Name}}
现在,如果我按如下方式修改事件表:
EventTable.put("more names", "More test events");
这也会更改 MainTable:
{table={more names=More test events, name=Test Event Name}}
很明显,EventTable 是通过引用 MainTable 来传递的。
我不明白为什么 EventTable 是通过引用传递的。
理想情况下,我想重用 EventTable HashMap 来创建其他条目,同时保留我的旧条目,所以我想按值传递 EventTable。
编辑:
忘记在主要问题中提及这一点,但是当我将字符串添加到 MainTable 时,之后修改字符串时不会改变。那么字符串的行为有什么不同呢?