Dictionary类已过时。新的实现应该实现 Map 接口,而不是扩展此类。
前些日子看代码,发现有许多地方用到了这个类。。。
一、简介
1、Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。
2、在任何一个 Dictionary 对象中,每个键至多与一个值相关联。
给定一个 Dictionary 和一个键,就可以查找所关联的元素。任何非 null 对象都可以用作键或值。
3、通常,应该在此类的实现中使用 equals 方法,以决定两个键是否相同。 (-- JavaAPI文档)
4、一个键只能与一个值相对应,但是一个值可以有多个键。
二、Dictionay类中的方法
1、在Dictionay中存储对象
在Dictionary中,pul方法使用特定的关键字来存储对象:
public abstrack Object put(Object key,Object value) throws NullPointarException
用put方法返回的对象是与该关键字(名字)相联系的对象,如果没有联系,则返回null。
不能将key或value设置null值,如果将null传递给这两个参数中的任意一个,将会产生NullPointerException异常。
2、从Dictionary中检索对象
get方法查找Dictionary和一个特定的关键字相联系的对象:
public abstract Object get(Object key)
如果没有和这个关键字相对应的值则返回null
3、移除一个对象
public abstrac Object remove(Object key)
4、判断Dictionary中是否有元素存在
如果Dictionary中没有对象,isEmpty方法返回true:
public abstract boolean isEmpty()
5、判断Dictionary中元素的个数
返回Dictionary中含有多少个“关键字-值”对:
public abstract int size()
6、返回一个枚举对象,该对象允许检查Dictionary中所有的关键字
public abstract Enumeration keys()
7、对于Dictionary中的所有值,elements方法返回一个枚举对象
public abstract Enumeration elements()。
java.util.Dictionary类:
public abstract class Dictionaryextends Object
Dictionary 类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。给定一个 Dictionary 和一个键,就可以查找所关联的元素。任何非 null 对象都可以用作键或值。
应用代码:
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Vector;
public class MyDictionary extends Dictionary {
private Vector keys;
private Vector elements;
public MyDictionary() {
this.keys = new Vector();
this.elements = new Vector();
}
public Enumeration keys() {
return this.keys.elements();
}
public Enumeration elements() {
return this.elements.elements();
}
public V get(Object key) {
int i = keys.indexOf(key);
return this.elements.get(i);
}
public boolean isEmpty() {
return this.keys.size()== 0;
}
public V put(Object key, Object value) {
int i = keys.indexOf(key);
if (i != -1) {
V oldElement = this.elements.elementAt(i);
this.elements.setElementAt((V) value, i);
return oldElement;
} else {
this.keys.addElement((K) key);
this.elements.addElement((V) value);
return null;
}
}
public V remove(Object key) {
int i = this.keys.indexOf(key);
if (i != -1) {
V oldElement = this.elements.elementAt(i);
this.keys.removeElementAt(i);
this.elements.removeElementAt(i);
return oldElement;
} else{
return null;
}
}
public int size() {
return this.keys.size();
}
/**
* @param args
*/
public static void main(String[] args) {
MyDictionary dic = new MyDictionary();
dic.put("1", "0001");
dic.put("2", "0002");
dic.put("3", "0003");
dic.put("4", "0004");
System.out.println(dic.get("1") + " " + dic.get("2"));
System.out.println(dic.remove("2") + " " + dic.remove("4"));
Enumeration keys = dic.keys();
while(keys.hasMoreElements()){
System.out.print(keys.nextElement() + " ");
}
System.out.println();
Enumeration elements = dic.elements();
while(elements.hasMoreElements()){
System.out.print(elements.nextElement() + " ");
}
System.out.println();
}
}总结:
Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。
给出键和值,你就可以将值存储在Dictionary对象中。一旦该值被存储,就可以通过它的键来获取它。所以和Map一样, Dictionary 也可以作为一个键/值对列表。
Dictionary定义的抽象方法如下表所示:
| 序号 | 方法描述 |
| 1 | Enumeration
elements( ) 返回此 dictionary 中值的枚举。 |
| 2 | Object
get(Object key) 返回此 dictionary 中该键所映射到的值。 |
| 3 | boolean
isEmpty( ) 测试此 dictionary 是否不存在从键到值的映射。 |
| 4 | Enumeration
keys( ) 返回此 dictionary 中的键的枚举。 |
| 5 | Object
put(Object key, Object value) 将指定 key 映射到此 dictionary 中指定 value。 |
| 6 | Object
remove(Object key) 从此 dictionary 中移除 key (及其相应的 value)。 |
| 7 | int
size( ) 返回此 dictionary 中条目(不同键)的数量。 |
Dictionary类已经过时了。在实际开发中,你可以实现Map接口来获取键/值的存储功能。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
