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. zoj Simple Equation 数论

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5176 AX+BY = XY  => (X-B)*(Y-A)= ...

  2. nyoj 325 zb的生日

    01背包 zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄 ...

  3. python 语句,条件,循环

    #coding:utf-8__author__ = 'Administrator'#想要在同一行打印,print后面加','print 12,print 34'''从模块导入函数import some ...

  4. Struts文件上传机制

    1首先建立文件上传jsp页面如下 <form action="" method="post" enctype="multipart/form-d ...

  5. cocos2d-x 2.0 拖尾效果分析

    转自:http://game.dapps.net/gamedev/game-engine/7281.html 在Cocos2d-x中,拖尾效果有一个专门的类CCMotionStreak来实现.下面我们 ...

  6. Android实时监听网络状态(2)

    在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityMana ...

  7. mongodb地理位置索引

    初始化集合(经度在前,纬度在后) ? 1 2 3 mongos> db.checkins.insert({ "_id" : "101", "lo ...

  8. css 行内元素和块级元素

    1. 块级元素默认在新行开始,如常见的div和p标签,行内元素默认在同行开始显示,如a,span标签 2.块级元素一般用于做容器,可容纳行内和块级元素,可设置width和height,行内元素只能容纳 ...

  9. java24 手写服务器最终版本

    手写服务器最终版本; <?xml version="1.0" encoding="UTF-8"?> <web-app> <serv ...

  10. IOPS=(Queue Depth)/(IO latency)

    IO 延迟:存储设备的IO延迟 Queue Depth:磁盘控制器所发出的批量指令的最大条数 IOPS:磁盘设备每秒的IO 三者之间的关系:IOPS=(Queue Depth)/(IO latency ...