zoukankan      html  css  js  c++  java
  • Java容器解析系列(15) HashTable Dictionary & Properties

    HashTable的实现原理与HashMap没有什么区别;

    其与HashMap的主要区别如下:

    1. 添加进入jdk时间:HashTable在jdk1.0时添加,HashMap在jdk1.2时添加;
    2. 类签名:两者都实现了Map接口,但是HashMap继承自AbstractMap,HashTable继承自Dictionary;
    3. HashMap允许key和value为null,HashTable不允许key和value为null;
    4. HashMap不是线程安全的,HashTable线程安全,每个方法要么是synchronized,要么被synchronized方法调用;
    5. HashTable可以Enumeration进行遍历;
    6. HashTable已经不推荐使用,如果需要线程安全的Map,可以使用Collections.synchronizedMap();

    Dictionary类定义如下:

    /**
     * 
     * 保存键值对;
     * key和value均不能为null;
     * 该类已被废弃,新的实现应该实现Map接口;
     * 
     * @since JDK1.0
     */
    public abstract class Dictionary<K, V> {
    
        public Dictionary() {
        }
    
        abstract public int size();
        abstract public boolean isEmpty();
        // 返回所有 key 的Enumeration
        abstract public Enumeration<K> keys();
        // 返回所有 value 的Enumeration
        abstract public Enumeration<V> elements();
        abstract public V get(Object key);
        abstract public V put(K key, V value);
        abstract public V remove(Object key);
    
    }
    

    HashTable其实还有一个子类:Properties.用于保存和读取key-value属性,并可以将属性持久化到属性文件中;
    关于Properties,可以查看Java中Properties类的操作java读取Properties文件的六种方法

  • 相关阅读:
    常见DOS命令
    前台传参到后台出现中文乱码问题
    Servlet.init() for servlet [spring-dispatcher] threw exception
    ES6-2
    ES6语法(一)
    JS区分对象类型
    ko数组
    sortable的基本属性
    MUI消息推送
    target和currentTarget
  • 原文地址:https://www.cnblogs.com/jamesvoid/p/10937595.html
Copyright © 2011-2022 走看看