Vector Dictionary HashMap

集合中只能够存储对象。

所有集合容纳的只有对象句柄。

vector:通过索引找到对应的对象,线性搜索

dictionary:通过对象(键)找到相应的对象(值)

Dictioary类实现的方法:使用两个Vector类

实现一个dictionary类

import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Vector;

public class myDictionary extends Dictionary{


private Vector keys=new Vector();
private Vector values=new Vector();

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 num=keys.indexOf(key);
if(num==-1){
return null;
}
return values.elementAt(num);
}


@Override
public Object put(Object key, Object value) {
       keys.addElement(key);
       values.addElement(value);
return null;
}


@Override
public Object remove(Object key) {
int index=keys.indexOf(key);
if(index==-1) return null;
keys.removeElementAt(index);
Object o=values.elementAt(index);
values.removeElementAt(index);
return o;
}
}

HashTable(散列表) 是dictionary的一个变种,查找速度快,通过散列码查找。所有对象都有一个散列码,hashCode()是跟雷的一个方法,Hashtable通过获取对象的hashCode,然后用他快速查找键。

HashTable ht=new HashTable();

ht.put( new test1(), new test2());

//键值对是自己定义的类,会出现问题,要在作为键的类中覆盖hashCode()和equals()方法。

import java.io.InputStream;
import java.io.OutputStream;
import java.util.Hashtable;
class test1{
int num;
test1(int i){
num=i;
}
public int hashCode(){
return num;
}
public boolean equals(Object o){
if(o!=null && o instanceof test1)//instanceof关键字:是否为test1的一个实例
{
return num== ((test1)o).num;
}
else return false;
}
}
class test2{
boolean shadow=Math.random()>0.5;
public String toString(){
if(shadow){
return "six";
}else{
return "five";
}
}
}
public class Test {
  public static void main(String [ ]args){
Hashtable ht=new Hashtable();
for(int i=0;i<10;i++){
ht.put(new test1(i),new test2());
}
 test1 test11=new test1(3);
 System.out.println(test11.hashCode());
 if(ht.containsKey(test11)){
 System.out.println((test2)ht.get(test11));
 }
  }
}




转载于:https://www.cnblogs.com/yeemi/p/7470193.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值