首页 > 编程语言 >JDK 1.8 Hashtable的源码分析

JDK 1.8 Hashtable的源码分析

时间:2023-01-18 17:22:16浏览次数:44  
标签:hash 1.8 value 源码 Hashtable key entry null

    /**
     * Hashtable特点:
     *  与hashTable一样 1.1 效率低,线程安全,key 不为null  hashMap1.2  效率高,key为null 长度11
     */
public class Hashtable<K,V>
    extends Dictionary<K,V>
    implements Map<K,V>, Cloneable, java.io.Serializable {

    /**
     *hash表中的数据 table
     */
    private transient Entry<?,?>[] table;

    /**
     * 集合大小
     */
    private transient int count;

    /**
     * 重设大小的阈值 12
     */
    private int threshold;

    /**
     * 加载因子
     *
     * @serial
     */
    private float loadFactor;


// 初始值 长度11  加载因子0.75
    public Hashtable() {
        this(11, 0.75f);
    }
    
//  线程安全
    public synchronized V put(K key, V value) {
        // Make sure the value is not null
        if (value == null) {
            throw new NullPointerException();
        }

        // Makes sure the key is not already in the hashtable.
        Entry<?,?> tab[] = table;
        int hash = key.hashCode();
        int index = (hash & 0x7FFFFFFF) % tab.length;
        @SuppressWarnings("unchecked")
        Entry<K,V> entry = (Entry<K,V>)tab[index];
        for(; entry != null ; entry = entry.next) {
            if ((entry.hash == hash) && entry.key.equals(key)) {
                V old = entry.value;
                entry.value = value;
                return old;
            }
        }

        addEntry(hash, key, value, index);
        return null;
    }
}
   

标签:hash,1.8,value,源码,Hashtable,key,entry,null
From: https://www.cnblogs.com/youran-he/p/17060263.html

相关文章

  • JDK 1.8 HashMap的源码分析
       /**   *HashMap的特点:   *1.AbstractMapMap冗余   *2.与hashTable一样1.1效率低,线程安全,key不为null hashMap1.2 效率高,key为null ......
  • JDK 1.8 TreeSet 源码分析
       /**   *TreeSet的特点:无序 唯一需要比较器自定义<>中的内容需要实现comparable的接口推荐外部实现:多态,自定义多种规则   *底层实现逻辑:二叉红黑......
  • JDK 1.8 hashset的源码分析
        /**   *hashset的特点:无序 唯一需要比较器自定义<>中的内容需要实现comparable的接口推荐外部实现:多态,自定义多种规则   *底层实现逻辑:数......
  • JDK1.8 Vector 源码相关分析
       /**   *底层实现逻辑:数组线性表查询效率高,修改效率低    *所有的操作类同ArrayList但是synchronize线程安全    *效率低    */public......
  • JDK 1.8 LinkedList 关键代码分析 重要属性和add
       /**   *有序(输入有序),不唯一    *底层实现是双向链表   *易修改,不易查询    */publicclassLinkedList<E>   extendsAbstractSequenti......
  • JDK 1.8 ArrayList源码分析 关键代码
    /***1.ArrayListAbstractList中实现了List接口冗余,作者已经承认*2.RandomAccess可以随机访问,标记接口***/publicclassArrayList<E>extendsAbstractList<E> ......
  • 视频直播app源码,Android TextView省略号代替多出数据
    视频直播app源码,AndroidTextView省略号代替多出数据1、xml实现 android:maxLines=”1”android:ellipsize=”end”<TextView    android:id="@+id/name"  ......
  • 学习笔记——Servlet底层源码分析;Servlet接口;ServletConfig接口;
    2023-01-17 一、Servlet底层源码分析1、Servlet结构图   说明:HttpServlet继承了GenericServlet类,GenericServlet实现了“ServletConfig”和“Servlet”两个接口,......
  • Cesium源码之Label(二)
    我们查看Cesium源码时,有时会发现源码中有大量的includeStart开头的注释,如下图所示。这里面大多是调试信息,当使用gulp打包时,removePragmas参数设置为true,则会删除includeSt......
  • 提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。
    提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。码云地址:​​​https://gitee.com/guyuanman/holiday​​业务场景:好多公司的业务在处理的时候,会面......