Java⾃定义⼀个字典类(Dictionary)
标准Java库只包含Dictionary的⼀个变种,名为:Hashtable。(散列表)
Java的散列表具有与AssocArray相同的接⼝(因为两者都是从Dictionary继承来的)。但有⼀个⽅⾯却反映出了差别:执⾏效率。若仔细想想必须为⼀个get()做的事情,就会发现在⼀个Vector⾥搜索键的速度要慢得多。但此时⽤散列表却可以加快不少速度。不必⽤冗长的线性搜索技术来查⼀个键,⽽是⽤⼀个特殊的值,名为“散列码”。散列码可以获取对象中的信息,然后将其转换成那个对象“相对唯⼀”的整数(int)。所有对象都有⼀个散列码,⽽hashCode()是根类Object 的⼀个⽅法。Hashtable 获取对象的hashCode(),然后⽤它快速查键。这样可使性能得到⼤幅度提升。
/**
* Created by xfyou on 2016/11/4.
*/
@SuppressWarnings("unchecked")
public class AssocArray extends Dictionary {
private Vector keys = new Vector();
private Vector values = new Vector();
@Override
public int size() {
return keys.size();
}
@Override
public boolean isEmpty() {
return keys.isEmpty();
}
@Override
public Enumeration keys() {
return keys.elements();
}
@Override
public Enumeration elements() {
return values.elements();
}
@Override
public Object get(Object key) {
int index = keys.indexOf(key);
if (-1 == index) {
return null;
}
return values.elementAt(index);
}
@Override
public Object put(Object key, Object value) {
java中index是什么意思
if (!ains(key)) {
keys.addElement(key);
values.addElement(value);
return key;
}
return null;
}
@Override
public Object remove(Object key) {
int index = keys.indexOf(key);
if (-1 == index) {
return null;
}
Object retVal = values.elementAt(index);
Object retVal = values.elementAt(index);
return retVal;
}
public static void main(String[] args) {
AssocArray aa = new AssocArray();
for (char c = 'a'; c <= 'z'; c++) {
aa.put(String.valueOf(c), String.valueOf(c).toUpperCase());
}
char[] ca = {'a', 'e', 'i', 'o', 'u'};
for (char aCa : ca)
System.out.println("Uppercase: " + aa.get(String.valueOf(aCa)));    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。