HashMap
来源:互联网 发布:自由游戏程序员 编辑:程序博客网 时间:2024/05/17 23:02
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { ... static class Node<K,V> implements Map.Entry<K,V> { ... } final class KeySet extends AbstractSet<K> { ... } final class Values extends AbstractCollection<V> { ... } final class EntrySet extends AbstractSet<Map.Entry<K,V>> { ... } abstract class HashIterator { ... } final class KeyIterator extends HashIterator implements Iterator<K> { ... } final class ValueIterator extends HashIterator implements Iterator<V> { ... } final class EntryIterator extends HashIterator implements Iterator<Map.Entry<K,V>> { ... } static class HashMapSpliterator<K,V> { ... } static final class KeySpliterator<K,V> extends HashMapSpliterator<K,V> implements Spliterator<K> { ... } static final class ValueSpliterator<K,V> extends HashMapSpliterator<K,V> implements Spliterator<V> { ... } static final class EntrySpliterator<K,V> extends HashMapSpliterator<K,V> implements Spliterator<Map.Entry<K,V>> { ... } static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> { ... } }
基于哈希表并实现Map接口。这个实现提供了map的所有操作,并允许key和value为null值。这个类并不保证映射的顺序,也不保证映射的顺序是一直不变的。
HashMap 和 Hashtable 很像,它们的区别在于是否同步和是否允许null值。
如果哈希函数可以将元素恰当的分散在桶中,那么它可以保证基本的操作时常数时间O(1)的(如get、put)。集合迭代需要的时间和HashMap的容量成正比O(Capacity* Number of key-value)。所以,当iteration很重要的时候,不能将Capacity初始值设置太高。
HashMap有两个参数对它的表现影响很大:初始容量(Capacity)和装填因子(load factor)。
初始容量默认值值为16,装填因子为0.75。这里,容量的值必须为2的,原因稍后解释。
多个Key值的hashCode()可能为同一值,为了改善此时的性能,当Key是Comparabl时,使用比较来进行排序。
HashMap不是同步的,不是线程安全的。当需要多个线程对HashMap执行并发操作时,需要外部加锁同步,或者使用其他封装的同步的Map类,或者利用Collections.synchronizedMap对HashMap进行封装。
Iterator是fail-fast。
0 0
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- HashMap
- hashmap
- HashMap
- HashMap
- HashMap
- hashmap
- HashMap
- Hashmap
- 关于访问权限修饰符
- Leetcode难度表及解题汇总
- 我的疑问:到底什么是交叉编译???
- FTP命令
- 软件外包之行情
- HashMap
- 今天是个比较特殊的日子——再次受到创伤
- 交叉编译资料1
- 2015年阿里巴巴实习面试经验
- Uva 572 Oil Deposits
- hihoCoder 1049 : 后序遍历
- LeetCode 202:Happy Number
- [1]Cocos2d-x之建立项目
- iOS UIButton的第四种状态(选中高亮)