自定义粗略实现HsahMap
java中自定义粗略实现HashMap方法
package collection;
public class MyHashMap_Node { int hash; Object key; Object value; MyHashMap_Node next; } package collection; public class MyHashMap { MyHashMap_Node[] table; int size; public MyHashMap() { table = new MyHashMap_Node[16]; } public MyHashMap(int a) { table = new MyHashMap_Node[a]; } public void put(Object key,Object value) { MyHashMap_Node m = new MyHashMap_Node(); m.hash = hash(key.hashCode(),table.length); m.key = key; m.value = value; m.next = null; MyHashMap_Node m1 = table[m.hash]; MyHashMap_Node last = null; boolean keyrepeat = false; if(m1==null) { table[m.hash] = m; size++; } else { while(m1!=null) { if(m1.key.equals(key)) { keyrepeat = true; System.out.println(“key重复”); m1.value = value; break; }else { last = m1; m1 = m1.next; } } if(!keyrepeat) { last.next = m; size++; } } } public String toString() { StringBuilder s = new StringBuilder(); for(int i = 0;i<table.length;i++) { while(table[i]!=null) { s.append(table[i].key + “:” + table[i].value + “,”); table[i] = table[i].next; } } return s.toString(); } public int hash(int v,int length) { return v&(length-1); } public Object get(Object key) { int h = hash(key.hashCode(),table.length); Object value = null; if(table[h]!=null) { while(table[h]!=null) { if(table[h].key.equals(key)) { value = table[h].value; break; }else { table[h] = table[h].next; } } } return value; } public static void main(String args[]) { MyHashMap m3 = new MyHashMap(); m3.put(10,“A”); m3.put(20,“B”); m3.put(30,“C”); System.out.println(m3.get(20)); } }
学习于哔哩哔哩尚学堂