先來手寫個簡單的哈希沒破吧,歡迎補充this
public class MyHashMap<K,V> { private Entry[] table; private static Integer CAPACITRY = 8; private int size = 0; public MyHashMap() { this.table = new Entry[CAPACITRY]; } public int size() { return size; } public Object get(Object key) { int hash = key.hashCode(); int i = hash % CAPACITRY; for(Entry<K,V> entry = table[i];entry != null; entry = entry.next){ if (entry.k.equals(key)) { return entry.v; } } return null; } public V put(K key, V value) { int hash = key.hashCode(); int i = hash % CAPACITRY; for(Entry<K,V> entry = table[i];entry != null; entry = entry.next){ if (entry.k.equals(key)) { V oldValue = entry.v; entry.v = value; return oldValue; } } addEntry(key, value, i); return null; } private void addEntry(K key, V value, int i) { Entry entry = new Entry(key, value, table[i]); table[i] = entry; size++; } class Entry<K,V>{ private K k; private V v; private Entry next; public Entry(K k, V v, Entry next) { this.k = k; this.v = v; this.next = next; } public K getK() { return k; } public void setK(K k) { this.k = k; } public V getV() { return v; } public void setV(V v) { this.v = v; } public Entry getNext() { return next; } public void setNext(Entry next) { this.next = next; } } public static void main(String[] args) { MyHashMap<String, String> myHashMap = new MyHashMap<>(); myHashMap.put("my", "hashMap"); myHashMap.put("my", "hashMapNew"); System.out.println(myHashMap.get("my")); } }