java 哈希链地址法_链地址法实现HashMap

packageorg.lyk.impl;importjava.util.ArrayList;importorg.lyk.interfaces.IMap;public class HashMap implements IMap{private classKeyValue

{privateK key;privateV value;publicKeyValue(K key, V value)

{this.key =key;this.value =value;

}publicK getKey()

{returnkey;

}public voidsetKey(K key)

{this.key =key;

}publicV getValue()

{returnvalue;

}public voidsetValue(V value)

{this.value =value;

}

}private int maxSize = 10;privateObject[] table;publicHashMap()

{this.table = new Object[this.maxSize];for(int i = 0; i < this.maxSize; i++)

{this.table[i] = new java.util.ArrayList();

}

}

@Overridepublic voidput(K key, V value)

{int index = this.getIndex(key);

KeyValue kv= this.find(key);if(kv == null)

{

((java.util.List)this.table[index]).add(newKeyValue(key, value));

}else{

kv.setValue(value);

}

}

@Overridepublic booleanremove(K key)

{int index = this.getIndex(key);

java.util.List kvs = (java.util.List)this.table[index];int listIndex = -1;for(KeyValue kv : kvs)

{if(kv.key.equals(key))

{

listIndex=kvs.indexOf(kv);

}

}if(listIndex != -1)

{

kvs.remove(listIndex);return true;

}return false;

}

@OverridepublicV get(K key)

{

KeyValue kv= this.find(key);if(kv != null)returnkv.getValue();else

return null;

}

@Overridepublic booleancontains(K key)

{if(this.get(key) != null)return true;else

return false;

}

@Overridepublic voidreplace(K key, V value)

{

KeyValue kv= this.find(key);if(kv != null)

{

kv.setValue(value);

}

}private intgetIndex(K key)

{return Math.abs(key.hashCode())%this.maxSize;

}privateKeyValue find(K key)

{int index = this.getIndex(key);

java.util.List kvs = (java.util.List)this.table[index];for(KeyValue kv : kvs)

{if(kv.key.equals(key))

{returnkv;

}

}return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值