Java Clear方法删除所有Hashmap';s对象
当我在早些时候将内部地图添加到外部地图后,清理内部地图时,我震惊了。有没有办法重置内部贴图,但不从外部贴图中移除对象 主要类别:Java Clear方法删除所有Hashmap';s对象,java,Java,当我在早些时候将内部地图添加到外部地图后,清理内部地图时,我震惊了。有没有办法重置内部贴图,但不从外部贴图中移除对象 主要类别: public static void main(String args[]) { Person per1 = new Person("1", "aaa",56, true); Person per2 = new Person("20", "bbb",34, false); Map<Integer, Map<
public static void main(String args[]) {
Person per1 = new Person("1", "aaa",56, true);
Person per2 = new Person("20", "bbb",34, false);
Map<Integer, Map<Integer, Person>> outer = new HashMap<Integer, Map<Integer, Person>>();
Map<Integer, Person> inner = new HashMap<Integer, Person>();
inner.put(100, per1);
inner.put(200, per2);
outer.put(1000, inner);
// inner: size = 2 , outer: size = 1 (key = 1000, value size = 2)
inner.clear();
// inner: size = 0 , outer: size = 1 (key = 1000, value size = 0)
// why outer value size = 0 ?
}
outer.put(1000,inner)
将内部变量中包含的引用作为值放在外部映射中。它不会创建内部
引用的实例的副本,因此如果稍后清除内部
映射,也会清除存储在外部映射中的值
如果希望外部贴图的值是原始内部贴图的副本,可以创建一个新实例:
outer.put(1000, new HashMap<Integer, Person>(inner));
outer.put(1000,新的HashMap(inner));
请注意,在这种情况下,新内部映射中的Person
实例将与原始internal
映射中的原始Person
实例相同,因此如果您对其中一个实例进行变异,则存储在映射中的实例也将发生变异 补充答案:您可以使用如下内容:outer.put(1000,newhashmap(inner))代码>@pL4Gu33我刚刚添加了:)
outer.put(1000, new HashMap<Integer, Person>(inner));