`
latex
  • 浏览: 29154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
java.util.concurrent.ConcurrentHashMap: ConcurrentHashMap是支持高并发、高吞吐量的线程安全的HashMap实现。它允许多个修改操作并发进行,关键在于使用了多个锁来控制对hash表的不同部分(Segment)进行的修改。每个段是一个小的hash table,有自己的锁,只要修改操作发生在不同的段上,就可以并发进行。在执行跨段的操作时首先尝试在不锁定整个map的情况下进行操作,不成功后再锁定整个map。key和value都不能为null。 ConcurrentHashMap中的重要字段: 1. int DEFAULT_INITIAL_CA ...
LinkedHashMap中重要的方法: 1. void clear() 调用HashMap中的clear方法清空数据,同时设置before和after都指向header。 2. boolean containsValue(Object value) 重写了HashMap中的containsValue方法,现在查询和table的容量无关了,只与实际存储的数据量有关。 3. V get(Object key) 得到指定key所对应的value。如果accessOrder为true时会调整所访问的Entry的位置。 4. void addEntry(int hash, K key, V va ...
java.util.LinkedHashMap: LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。 LinkedHashMap中重要的字段: 1. Entry<K,V> header 在构造的时候被初始化,开始的时候header的头尾都是指向自身。 2. boolean accessOrder 迭代时的顺序,若为false则按照插入的顺序排序;若 ...
HashMap中重要的方法: 1. public V put(K key, V value) HashMap中允许key为null,当key为null时,调用private V putForNullKey(V value)把对应的Entry放到table[0]位置。如果key不为null,利用key计算hash码,从而得到对应的table下标,如果Entry<K,V> e = table[i]已经存在,则更新e.value,如果Entry<K,V> e = table[i]不存在,modCount加1,记录结构变化,调用void addEntry(int hash, K ...
java.util.HashMap: table数组中存放的是单向链表Entry,Entry中存放的实际数据,一个链表中可能有多个数据,由这些数据的Key可以算出hashCode得到在table中的相同的“桶位”。hashMap能实现快速定位,就是利用了这一特点。不需要对所有数据进行迭代,利用key的hashCode快速找到“桶位”,然后只在桶位中单向链表中的少量数据中进行迭代,所以速度很快。通过由key生成的hash码,可以找到table数组中对应的单向链表Entry,然后在Entry中找到对应的key,从而取出value。 HashMap中重要的字段: 1. DEFAULT_INITI ...
Global site tag (gtag.js) - Google Analytics