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