使用List在Java中的HashMap实现
时间:2020-02-23 14:36:15 来源:igfitidea点击:
HashMap是用于存储键值对的Map的最广泛使用的实现之一。
它是Java 1.2中引入的,是Collections API的重要一类。
其中我试图用ArrayList实现HashMap。
Java中的HashMap实现
以下代码将提供两个基本的HashMap函数,即get(key)和put(key,value)。
该代码还负责在存储条目时检查重复值。
这是HashMap的基本实现,不应替代HashMap。
另外,在测试代码时,请确保KEY中使用的Object具有equals()方法的正确实现。
MyHashMap.java
package com.theitroad.util;
import java.util.ArrayList;
import java.util.List;
public class MyHashMap {
class Container{
Object key;
Object value;
public void insert(Object k, Object v){
this.key=k;
this.value=v;
}
}
private Container c;
private List<Container> recordList;
public MyHashMap(){
this.recordList=new ArrayList<Container>();
}
public void put(Object k, Object v){
this.c=new Container();
c.insert(k, v);
//check for the same key before adding
for(int i=0; i<recordList.size(); i++){
Container c1=recordList.get(i);
if(c1.key.equals(k)){
//remove the existing object
recordList.remove(i);
break;
}
}
recordList.add(c);
}
public Object get(Object k){
for(int i=0; i<this.recordList.size(); i++){
Container con = recordList.get(i);
//System.out.println("k.toString():"+k.toString()+"con.key.toString()"+con.key.toString());
if (k.toString()==con.key.toString()) {
return con.value;
}
}
return null;
}
public static void main(String[] args) {
MyHashMap hm = new MyHashMap();
hm.put("1", "1");
hm.put("2", "2");
hm.put("3", "3");
System.out.println(hm.get("3"));
hm.put("3", "4");
System.out.println(hm.get("1"));
System.out.println(hm.get("3"));
System.out.println(hm.get("8"));
}
}
上面程序的输出是:
3 1 4 null

