相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
class MyHashMap {
private class Pari{
private int key;
private int val;
public Pari(int key, int val) {
this.key = key;
this.val = val;
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
private static int Base = 769;
private LinkedList[] data;
public MyHashMap() {
data= new LinkedList[Base];//初始化
for (int i = 0; i < Base; i++) {
data[i]= new LinkedList<Pari>();
}
}
public void put(int key, int value) {
int hash = hash(key);//获取hash值
Iterator<Pari> iterator = data[hash].iterator();//找到对应hash的数组元素,元素链表生成迭代器
while (iterator.hasNext()){//链表遍历,是否有下一个元素
Pari pari = iterator.next();//获取元素
if (pari.getKey() == key){
pari.setVal(value);
return;
}
}
data[hash].addLast(new Pari(key,value));//加入对应hash的链表尾部
}
public int get(int key) {
int hash = hash(key);//获取hash值
Iterator<Pari> iterator = data[hash].iterator();//找到对应hash的数组元素,元素链表生成迭代器
while (iterator.hasNext()){//链表遍历,是否有下一个元素
Pari pari = iterator.next();//获取元素
if (pari.getKey()== key){//找到对应的key
return pari.getVal();//返回
}
}
return -1;
}
public void remove(int key) {
int hash = hash(key);//获取hash值
Iterator<Pari> iterator = data[hash].iterator();//找到对应hash的数组元素,元素链表生成迭代器
while (iterator.hasNext()){//链表遍历,是否有下一个元素
Pari pari = iterator.next();//获取元素
if (pari.getKey()==key){//找到对应的key
iterator.remove();//删除元素
}
}
}
public static int hash(int key){
return key % Base;
}
}
/**
* Your MyHashMap object will be instantiated and called as such:
* MyHashMap obj = new MyHashMap();
* obj.put(key,value);
* int param_2 = obj.get(key);
* obj.remove(key);
*/