package com.nascent.ecrp.sg.guide.notify; public class MyHashMap<K, V> { private Entry[] table; private static Integer CAPACITY = 8; private Integer size = 0; public MyHashMap() { this.table = new Entry[CAPACITY]; } public Integer size(){ return size; } public Object get(Object key){ int hashCode = key.hashCode(); int i = hashCode % 8; for (Entry<K,V> entry = table[i] ; entry != null ; entry = entry.next){ if (entry.k.equals(key)){ return entry.v; } } return null; } public Object put(K key, V value){ int hashCode = key.hashCode(); int i = hashCode % 8; 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(new Entry(key, value, table[i]), i); return null; } //增加节点 private void addEntry(Entry entry1, int i) { Entry entry = entry1; table[i] = entry; size ++; } class Entry<K, V>{ private K k; private V v; private Entry<K, V> next; public Entry(K k, V v, Entry<K, V> next) { this.k = k; this.v = v; this.next = next; } public K getK() { return k; } public V getV() { return v; } public Entry<K, V> getNext() { return next; } } public static void main(String[] args) { MyHashMap<String, String> myHashMap = new MyHashMap<>(); for (int i = 0; i < 20 ; i++) { myHashMap.put("测试"+i, "测试"+i); } System.out.println(myHashMap.get("测试5")); } }
jdk1.7 链表原理实现HashMap
最新推荐文章于 2024-07-30 13:14:27 发布