使用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