-
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个答案 按时间排序 按投票排序
-
采纳的答案
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
-
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
相关推荐
java hashmap 扩容因子为什么是0.75,官方给出的解释
在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。本文主要比较了这三种Map的性能,尤其是在插入和查找操作上的效率。 1. **TreeMap**...
在Java编程中,HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的存储功能,具有快速存取和高效查找的特点。HashMap基于哈希表(也称为散列表)原理,通过键对象的哈希码来定位元素,进而实现O(1)...
Java 中的 Map、HashMap、TreeMap 使用详解 Map 是 Java 集合框架中的一个接口,用于存储键值对,根据键可以获取值。Map 中的键不允许重复,但值可以重复。在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 ...
在JavaScript中,HashMap是一种数据结构,它存储键值对,并且通过键来快速查找值。虽然JavaScript原生的`Map`对象提供了类似的功能,但在某些场景下,开发者可能需要自定义HashMap来满足特定的需求,例如优化性能...
在JavaScript中,HashMap是一种数据结构,它允许我们通过键(key)来存储和检索值(value),类似于对象,但提供了一种更高效的方式来处理大量数据。JavaScript原生并不支持HashMap,但开发者可以通过自定义类来实现...
易语言HashMap类是一种在易语言编程环境中实现的高效数据结构,它主要用于存储键值对(key-value pairs),提供快速的数据存取。HashMap类基于哈希表(Hash Table)原理,通过计算键的散列值来确定数据在内存中的...
《java编程思想》,Map结合HashMap获取键相关联的值
List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...
1. 键可以为 null:HashMap 中的键可以为 null,这意味着可以将 null 作为键来存储值。 2. 键不能重复:如果尝试将重复的键添加到 HashMap 中,后添加的键将覆盖之前的键,最后一次添加的键的值将被保留。 3. 键可以...
在Java中,HashMap是一种广泛使用的数据结构,它基于哈希表的Map接口实现。哈希表是一种通过哈希过程将键映射到特定位置的数据结构,该位置存储了键对应的值。在详细探讨Java中HashMap的工作机制之前,首先需要理解...
**2.2 为什么数组长度为2的幂时效率最高** 假设数组长度为16(2的4次方),如两个键的哈希值分别为8和9,进行按位与操作后结果相同(均为0),这会导致哈希碰撞。因此,8和9会存放在数组的同一位置,形成链表。 ...
### Java中HashMap, LinkedHashMap, TreeMap,HashTable的区别 在Java编程语言中,`Map`接口是集合框架中的一个重要组成部分,用于存储键值对。本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, ...
HashMap是一种基于哈希表的Map接口实现,它提供了快速的插入、查找和删除操作,时间复杂度通常为O(1)。通过将枚举值作为键(Key),相关属性或行为作为值(Value),我们可以创建一个映射关系,达到类似枚举的效果。...
1. 使用Collections.synchronizedMap():Java提供了一个便捷的方法,通过Collections.synchronizedMap()可以将HashMap转换为线程安全的Map。但是需要注意,虽然这个方法可以保证基本的线程安全,但迭代仍然是非线程...
Java中的HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的高效存储和访问。HashMap基于哈希表(也称为散列表)原理工作,它允许用户通过键(Key)快速查找对应的值(Value)。在HashMap中,键和值...
本文将探讨如何利用JavaScript和Java中的HashMap(在JavaScript中,我们可以使用类似的数据结构,如`Map`)来消除`<select>`中的重复值。 首先,让我们了解HashMap或Map数据结构。HashMap是Java中的一种集合类,它...
2. **转换为List**:将`HashMap`转换为`List<Map.Entry>`类型的列表,这样可以方便地利用集合框架中的方法。 3. **使用Collections.sort()**:调用`Collections.sort()`方法,并传入一个实现了`Comparator`接口的...
2. 为什么HashMap的key不能为null? 答:null键会覆盖原有的null键值对,且可能导致查找混乱。设计上,HashMap允许一个null值,但仅限于一个键为null的条目。 3. 如何避免HashMap中的哈希碰撞? 答:通过良好的键的...
要将User对象转换为Map,我们可以创建一个通用的方法,这个方法接受任何Pojo类型的对象,然后遍历其属性并将其放入Map中。这里提供一个简单的工具类`Pojo2MapUtil`: ```java import java.lang.reflect.Field; ...