java.util.Dictionary源码分析
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源码分析的更多相关文章
- java.util.HashMap源码分析
在java jdk8中对HashMap的源码进行了优化,在jdk7中,HashMap处理“碰撞”的时候,都是采用链表来存储,当碰撞的结点很多时,查询时间是O(n). 在jdk8中,HashMap处理“ ...
- java.util.Collection源码分析和深度讲解
写在开头 java.util.Collection 作为Java开发最常用的接口之一,我们经常使用,今天我带大家一起研究一下Collection接口,希望对大家以后的编程以及系统设计能有所帮助,本文所 ...
- java.util.Hashtable源码分析
Hashtable实现一个键值映射的表.任何非null的object可以用作key和value. 为了能存取对象,放在表里的对象必须实现hashCode和equals方法. 一个Hashtable有两 ...
- java.util.AbstractStringBuilder源码分析
AbstractStringBuilder是一个抽象类,是StringBuilder和StringBuffer的父类,分析它的源码对StringBuilder和StringBuffer代码的理解有很大 ...
- java.util.Map源码分析
/** * An object that maps keys to values. A map cannot contain duplicate keys; * each key can map to ...
- java.util.TreeSet源码分析
TreeSet是基于TreeMap实现的,元素的顺序取决于元素自身的自然顺序或者在构造时提供的比较器. 对于add,remove,contains操作,保证log(n)的时间复杂度. 因为Set接口的 ...
- java.util.TreeMap源码分析
TreeMap的实现基于红黑树,排列的顺序根据key的大小,或者在创建时提供的比较器,取决于使用哪个构造器. 对于,containsKey,get,put,remove操作,保证时间复杂度为log(n ...
- java.util.LinkedList源码分析
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, D ...
- java.util.ArrayList源码分析
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...
随机推荐
- HW3.22
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- HW2.22
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- POJ1840: Eqs(hash问题)
一道典型的hash问题: 已知a1,a2,a3,a4,a5,求有多少种不同的<x1,x2,x3,x4,x5>组合满足等式: a1*x1^3 + a2*x2^3 + a3*x3^3 + a4 ...
- HDU-4414 Finding crosses 水题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4414 直接暴力判断即可. //STATUS:C++_AC_15MS_232KB #include &l ...
- php&mysql
更新语句 $query='update num set num='.$counter.'where id=1'; ....................这个查询失败 $query='upd ...
- navicate恢复数据
恢复psc文件,出现记录数为0 不要使用事务,选用遇到错误继续
- Palindrome(poj3974)(manacher算法)
http://poj.org/problem?id=3974 Palindrome Time Limit: 15000MSMemory Limit: 65536K Total Submissions: ...
- [Webpack 2] Optimize React size and performance with Webpack production plugins
You can fine tune several webpack plugins to make your bundle as small as it can be for your specifi ...
- iOS 数组越界 Crash加工经验
我们先来看看有可能会出现的数组越界Crash的地方. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSInd ...
- CSS3超酷移动手机滑动隐藏側边栏菜单特效
这是一组共4种效果很炫酷的CSS3移动手机滑动隐藏側边栏菜单特效. 这四种效果各自是:默认的点击滑动側边栏菜单效果.带3D transforms的滑动側边栏效果.文字缩放和淡入淡出效果的滑动側边栏以及 ...