java---Hashmap
构造方法摘要 | |
---|---|
HashMap() 构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 |
|
HashMap(int initialCapacity)
构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap。 |
|
HashMap(int initialCapacity, float loadFactor)
构造一个带指定初始容量和加载因子的空 HashMap。 |
|
HashMap(Map<? extends
K,? extends
V> m) 构造一个映射关系与指定 Map 相同的 HashMap。 |
方法摘要 | |
---|---|
void |
clear()
从此映射中移除所有映射关系。 |
Object |
clone()
返回此 HashMap 实例的浅表复制:并不克隆键和值本身。 |
boolean |
containsKey(Object key)
如果此映射包含对于指定的键的映射关系,则返回 true。 |
boolean |
containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。 |
Set<Map.Entry<K,V>> |
entrySet()
返回此映射所包含的映射关系的 collection 视图。 |
V |
get(Object key)
返回指定键在此标识哈希映射中所映射的值,如果对于此键来说,映射不包含任何映射关系,则返回 null。 |
boolean |
isEmpty()
如果此映射不包含键-值映射关系,则返回 true。 |
Set<K> |
keySet()
返回此映射中所包含的键的 set 视图。 |
V |
put(K key,
V value) 在此映射中关联指定值与指定键。 |
void |
putAll(Map<? extends
K,? extends
V> m) 将指定映射的所有映射关系复制到此映射中,这些映射关系将替换此映射目前针对指定映射的所有键的所有映射关系。 |
V |
remove(Object key)
如果此映射中存在该键的映射关系,则将其删除。 |
int |
size()
返回此映射中的键-值映射关系数。 |
Collection<V> |
values()
返回此映射所包含的值的 collection 视图。 |
重点介绍HashMap。首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。
再来看看HashMap和TreeMap有什么区别。HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
再来看看HashMap和TreeMap有什么区别。HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
在HashMap中通过get()来获取value,通过put()来插入value,ContainsKey()则用来检验对象是否已经存在。可以看出,和ArrayList的操作相比,HashMap除了通过key索引其内容之外,别的方面差异并不大。
前面介绍了,HashMap是基于HashCode的,在所有对象的超类Object中有一个HashCode()方法,但是它和equals方法一样,并不能适用于所有的情况.
我们知道在Java中最常用的两种结构是数组和模拟指针(引用),几乎所有的数据结构都可以利用这两种来组合实现,HashMap也是如此。实际上HashMap是一个“链表散列”.从上图我们可以看出HashMap底层实现还是数组,只是数组的每一项都是一条链。其中参数initialCapacity就代表了该数组的长度。
部分查看原文:http://cmsblogs.com/
@zzmher