0 0

hashmap中的clone为什么是shallow copy of this map5

public Object clone() {
        HashMap<K,V> result = null;
try {
    result = (HashMap<K,V>)super.clone();
} catch (CloneNotSupportedException e) {
    // assert false;
}
        result.table = new Entry[table.length];
        result.entrySet = null;
        result.modCount = 0;
        result.size = 0;
        result.init();
        result.putAllForCreate(this);

        return result;
    }
新建Entry,把原来Entry中数据放到新的Entry中。新的HashMap与旧的HashMap操作没有关系了,为什么还是shallow?
2013年1月09日 13:09

3个答案 按时间排序 按投票排序

0 0

采纳的答案

javadoc上说得很清楚呀

引用

    /**
     * Returns a shallow copy of this <tt>HashMap</tt> instance: the keys and
     * values themselves are not cloned.

     *
     * @return a shallow copy of this map
     */

2013年1月11日 13:54
0 0

HashMap hm = new HashMap();
HashMap hm1 = new HashMap();
hm1.put("A", "AA");
hm.put(1, "A");
hm.put(2, hm1);
Object hmc =  hm.clone();
hm1.put("A", "AAA");
hm1.put("B", "BBB");
System.out.println(hm.toString());
System.out.println(hmc.toString());

hm:{1=A, 2={A=AAA, B=BBB}}
hmc:{1=A, 2={A=AAA, B=BBB}}

2014年7月09日 14:16
0 0

因为里边的数据还是同一个,所以还是浅拷贝

深拷贝是子子孙孙都要复制

2013年1月09日 13:28

相关推荐

    JAVA hashmap 负载因子为什么是0.75,官方解释

    java hashmap 扩容因子为什么是0.75,官方给出的解释

    Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

    在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。本文主要比较了这三种Map的性能,尤其是在插入和查找操作上的效率。 1. **TreeMap**...

    自定义map实现java的hashmap

    在Java编程中,HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的存储功能,具有快速存取和高效查找的特点。HashMap基于哈希表(也称为散列表)原理,通过键对象的哈希码来定位元素,进而实现O(1)...

    Map,HashMap,TreeMap的使用

    Java 中的 Map、HashMap、TreeMap 使用详解 Map 是 Java 集合框架中的一个接口,用于存储键值对,根据键可以获取值。Map 中的键不允许重复,但值可以重复。在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 ...

    Javascript实现和操作HashMap

    在JavaScript中,HashMap是一种数据结构,它存储键值对,并且通过键来快速查找值。虽然JavaScript原生的`Map`对象提供了类似的功能,但在某些场景下,开发者可能需要自定义HashMap来满足特定的需求,例如优化性能...

    一个基于js的HashMap

    在JavaScript中,HashMap是一种数据结构,它允许我们通过键(key)来存储和检索值(value),类似于对象,但提供了一种更高效的方式来处理大量数据。JavaScript原生并不支持HashMap,但开发者可以通过自定义类来实现...

    易语言HashMap类

    易语言HashMap类是一种在易语言编程环境中实现的高效数据结构,它主要用于存储键值对(key-value pairs),提供快速的数据存取。HashMap类基于哈希表(Hash Table)原理,通过计算键的散列值来确定数据在内存中的...

    Map与HashMap

    《java编程思想》,Map结合HashMap获取键相关联的值

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...

    HashMap总结

    1. 键可以为 null:HashMap 中的键可以为 null,这意味着可以将 null 作为键来存储值。 2. 键不能重复:如果尝试将重复的键添加到 HashMap 中,后添加的键将覆盖之前的键,最后一次添加的键的值将被保留。 3. 键可以...

    Java中HashMap的工作机制

    在Java中,HashMap是一种广泛使用的数据结构,它基于哈希表的Map接口实现。哈希表是一种通过哈希过程将键映射到特定位置的数据结构,该位置存储了键对应的值。在详细探讨Java中HashMap的工作机制之前,首先需要理解...

    HashMap介绍和使用

    **2.2 为什么数组长度为2的幂时效率最高** 假设数组长度为16(2的4次方),如两个键的哈希值分别为8和9,进行按位与操作后结果相同(均为0),这会导致哈希碰撞。因此,8和9会存放在数组的同一位置,形成链表。 ...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    ### Java中HashMap, LinkedHashMap, TreeMap,HashTable的区别 在Java编程语言中,`Map`接口是集合框架中的一个重要组成部分,用于存储键值对。本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, ...

    枚举 HashMap

    HashMap是一种基于哈希表的Map接口实现,它提供了快速的插入、查找和删除操作,时间复杂度通常为O(1)。通过将枚举值作为键(Key),相关属性或行为作为值(Value),我们可以创建一个映射关系,达到类似枚举的效果。...

    关于如何解决HashMap线程安全问题的介绍

    1. 使用Collections.synchronizedMap():Java提供了一个便捷的方法,通过Collections.synchronizedMap()可以将HashMap转换为线程安全的Map。但是需要注意,虽然这个方法可以保证基本的线程安全,但迭代仍然是非线程...

    Java中HashMap详解(通俗易懂).doc

    Java中的HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的高效存储和访问。HashMap基于哈希表(也称为散列表)原理工作,它允许用户通过键(Key)快速查找对应的值(Value)。在HashMap中,键和值...

    html js 用HashMap去掉html中select中的重复值

    本文将探讨如何利用JavaScript和Java中的HashMap(在JavaScript中,我们可以使用类似的数据结构,如`Map`)来消除`&lt;select&gt;`中的重复值。 首先,让我们了解HashMap或Map数据结构。HashMap是Java中的一种集合类,它...

    HashMap排序

    2. **转换为List**:将`HashMap`转换为`List&lt;Map.Entry&gt;`类型的列表,这样可以方便地利用集合框架中的方法。 3. **使用Collections.sort()**:调用`Collections.sort()`方法,并传入一个实现了`Comparator`接口的...

    hashmap面试题_hashmap_

    2. 为什么HashMap的key不能为null? 答:null键会覆盖原有的null键值对,且可能导致查找混乱。设计上,HashMap允许一个null值,但仅限于一个键为null的条目。 3. 如何避免HashMap中的哈希碰撞? 答:通过良好的键的...

    java Pojo转Map

    要将User对象转换为Map,我们可以创建一个通用的方法,这个方法接受任何Pojo类型的对象,然后遍历其属性并将其放入Map中。这里提供一个简单的工具类`Pojo2MapUtil`: ```java import java.lang.reflect.Field; ...

Global site tag (gtag.js) - Google Analytics