美文网首页
Map及子类

Map及子类

作者: 土豆破忒头 | 来源:发表于2016-12-04 13:43 被阅读0次

1、hashMap

HashMap数据结构:根据key的hashCode来计算hash值,只要hashCode相同,计算出来的hash值就一样。出现hash冲突,就采用链表的方式,将相同hash值的对象用链表连接。

HashMap存取:put新元素时,首先根据key的hashCode重新计算hash值(二次hash),根据这个新的hash值得到这个元素在数组的位置(下标),如果数组已经存放其他元素,那么该位置元素以链表形式存放,新加入的放链头,最先加入的在链尾。根据Key的hashCode二次hash的算法函数hash(int h),此方法加入了高位计算,防止低位不变而高位变化时造成的hash冲突。函数的具体实现如下(>>>表示右移1位并忽略符号位,空位以0补齐。而>>表示右移不忽略符号位,即相当于除以2):

2 ConcurrentHashMap

在HashMap的基础上,ConcurrentHashMap将数据分为多个segment,默认16个,然后每次操作对一个segment加锁,避免多线程锁的几率,提高并发效率。

3 Hashtable和HashMap的区别

HashMap父类为AbstractMap,方法不同步,K,V可为null,添加新的kv,若k相同,则将新的v覆盖。

HashTable父类为Dictionary,方法同步,k,v不可为null,添加新的kv,若k相同,则将新的v覆盖。

相关文章

  • Map及子类

    1、hashMap HashMap数据结构:根据key的hashCode来计算hash值,只要hashCode相同...

  • Java 集合框架_AbstractMap

    AbstractMap类是Map接口的子类,实现了Map接口大部分方法,它的子类只需要实现Set

  • Collection和map

    Collection的子类有List和Set,Map 是独立的接口。 一、Map 1.HashMap Hashma...

  • Java 集合类实现原理

    Collection & Map Collection 子类有 List 和 Set List --> Array...

  • Map接口与抽象类

    一.Map部分结构图 二.Map接口 三.AbstractMap抽象类 供子类实现的方法:put,entrySet...

  • WeakHashMap

    一、什么是WeakHashMap? Map 的子类常见的有 HashMap[https://www.jianshu...

  • Map转Serializable的问题

    Map本身只是一个接口,它的子类Hashtable,HashMap,LinkedHashMap,TreeMap都已...

  • Dialog及子类

    Dialog 正常的使用 [图片上传失败...(image-c358fd-1539477787745)]非常的丑陋...

  • java day 14

    Map java Map及Map.Entry详解Map是java中的接口,Map.Entry是Map的一个内部接口...

  • Java集合Map常用子类简介

    Map(映射,存储的是“键-值”映射表,“键”是不能重复的) 如果键重复,则相当于修改对应键的值。 Map接口定义...

网友评论

      本文标题:Map及子类

      本文链接:https://www.haomeiwen.com/subject/apjhmttx.html