Dictionary是一个抽象类,Hashtable是它的一个子类。

类的声明:
/**

The <code>Dictionary</code> class is the abstract parent of any
* class, such as <code>Hashtable</code>, which maps keys to values.
* Every key and every value is an object. In any one <tt>Dictionary</tt>
* object, every key is associated with at most one value. Given a
* <tt>Dictionary</tt> and a key, the associated element can be looked up.
* Any non-<code>null</code> object can be used as a key and as a value.
* <p>
* As a rule, the <code>equals</code> method should be used by
* implementations of this class to decide if two keys are the same.
* <p>
* <strong>NOTE: This class is obsolete. New implementations should
* implement the Map interface, rather than extending this class.</strong>

*/

public abstract class Dictionary<K,V> 

解释一下上面对Dictionary类的注释,Dictionary类是一个抽象的类,是Hashtable的父类,是一个key->value的映射表,任意key和value是Object,不可以是null。

给一个Dictionary和key,它的value就能找到。equals方法用来判断两个key是否相同。特别注意,这个类已经被废弃了,不建议继续继承这个类,建议去实现Map接口。

这个类之所以仍存在的原因是为了兼容之前使用这个类的系统。

public Dictionary() {//使用默认的无参构造器
} abstract public int size();//返回key的数量 abstract public boolean isEmpty();//如果Dictionary不存在任何一个key-value映射,返回true,否则fasle abstract public Enumeration<K> keys();//返回包含所有key的Emumeration abstract public Enumeration<V> elements();//返回包含所有value的Emumeration abstract public V get(Object key);//根据key,查找对应的value abstract public V put(K key, V value);//插入一个key-value映射,如果key或value为nul,抛出NullPoniterException,如果已经存在相同的key,返回旧的value,如果不存                        //在相同的key,则创建一个映射到Dictionary中,返回null abstract public V remove(Object key);//根据key删除一个对应的key-value映射关系,如果Dictionary不存在这个key,相当与什么都没做,如果key是null抛出                            //NullPoniterException

虽然Dictionary类已经被废弃了,但是研究一下它的源码还是有好处的,这样才能知道为什么会被废弃掉,以及它的替代品的优势是什么。就比如keys和elements方法返回一个Enumeration,jdk1.2之后有Iterator这个接口,可以实现遍历一个集合的对客户的透明性,以保持低耦合和单一职责原则,实现Iterator接口的迭代器类就可以实现遍历集合了,而真正的客户可以关注管理数据。

java.util.Dictionary源码分析的更多相关文章

  1. java.util.HashMap源码分析

    在java jdk8中对HashMap的源码进行了优化,在jdk7中,HashMap处理“碰撞”的时候,都是采用链表来存储,当碰撞的结点很多时,查询时间是O(n). 在jdk8中,HashMap处理“ ...

  2. java.util.Collection源码分析和深度讲解

    写在开头 java.util.Collection 作为Java开发最常用的接口之一,我们经常使用,今天我带大家一起研究一下Collection接口,希望对大家以后的编程以及系统设计能有所帮助,本文所 ...

  3. java.util.Hashtable源码分析

    Hashtable实现一个键值映射的表.任何非null的object可以用作key和value. 为了能存取对象,放在表里的对象必须实现hashCode和equals方法. 一个Hashtable有两 ...

  4. java.util.AbstractStringBuilder源码分析

    AbstractStringBuilder是一个抽象类,是StringBuilder和StringBuffer的父类,分析它的源码对StringBuilder和StringBuffer代码的理解有很大 ...

  5. java.util.Map源码分析

    /** * An object that maps keys to values. A map cannot contain duplicate keys; * each key can map to ...

  6. java.util.TreeSet源码分析

    TreeSet是基于TreeMap实现的,元素的顺序取决于元素自身的自然顺序或者在构造时提供的比较器. 对于add,remove,contains操作,保证log(n)的时间复杂度. 因为Set接口的 ...

  7. java.util.TreeMap源码分析

    TreeMap的实现基于红黑树,排列的顺序根据key的大小,或者在创建时提供的比较器,取决于使用哪个构造器. 对于,containsKey,get,put,remove操作,保证时间复杂度为log(n ...

  8. java.util.LinkedList源码分析

    public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, D ...

  9. java.util.ArrayList源码分析

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...

随机推荐

  1. 费用提前计算相关的DP(BZOJ2037,POJ3042,ZOJ3469)

    在刷ZeroClock大神的区间DP专辑,遇见了ZOJ3469,完全不无从下手,然后有人说是论问题,推荐看徐源盛<对一类动态规划问题的研究>这篇论文,果断得膜拜了下,感觉好神奇,可以把未来 ...

  2. Android学习之 博客专栏 与 资料

    android | Android Developers Android学习系列 - 谦虚的天下 - 博客园 android基础 - 生如夏花之灿烂 - 博客园 Android开发 - 皓月繁星 - ...

  3. canvas createRadialGradient 用法

    径向渐变,就是环形的渐变了,由圆心(或者是较小的同心圆)开始向外扩散渐变的效果,听着有些抽象,往下看图一下子就明白了.线性渐变指定了起点和终点,径向渐变则指定了开始的结束园的圆心和半径.这里使用cre ...

  4. Unity定时器

    需求:制作定时器,运行3秒后执行第一次,之后每隔3秒执行一次操作. 1.使用变量在Update中计时 public class TestTimer : MonoBehaviour { private ...

  5. Java获取一个路径下指定后缀名的所有文件

    方法一: http://blog.csdn.net/zjx102938/article/details/8114114 import java.io.File; import java.util.Ar ...

  6. unity3d 获取相机视口四个角的坐标

    功能:如标题所示,主要考虑用来做3d Plane的自适应屏幕 /// <summary> /// 获取指定距离下相机视口四个角的坐标 /// </summary> /// &l ...

  7. SecureCRT 终端仿真程序 v7.0.0.326 中文绿色便携破解版

    http://wd.jb51.net:81/201205/tools/SecureCRT_jb51.rar Secure CRT是一款支持 SSH2.SSH1.Telnet.Telnet/SSH.Re ...

  8. 成员方法的this指针

    1.我们知道成员方法中,有个隐式的this常量指针.考虑,Derived继承的成员方法中this指针的表面类型是什么?子类重写的虚方法中this指针的表面类型是什么? 2.Derived继承的方法,就 ...

  9. xcode针对不同IOS版本的代码编译问题

    有时候在项目中为了兼容低版本IOS系统,通常会针对不同的OS版本写不同的代码,例如: #define IS_IOS7_OR_LATER ([[UIDevice currentDevice].syste ...

  10. linux 清空文件内容命令

    清空文件内容命令 $ echo "" >log.log > 是重写,覆盖式 >>是尾部追加