手工实现HashMap
链表节点package y.i.d; public class Node2K,V { int hash; K key; V value; Node2K,V next; }实现package y.i.d; public class MyHashMapK,V { Node2K,V[] table; //位桶数组 int size; //长度 public MyHashMap() { this.tablenew Node2[16]; // 实例的初始化 } public void put(K key,V value) { Node2K,V newNode new Node2(); newNode.hashmyHash(key, table.length); newNode.keykey; newNode.valuevalue; newNode.nextnull; Node2K,V temptable[newNode.hash]; Node2K,V saveLastTempnull; boolean flag false; if(tempnull) { table[newNode.hash]newNode; size; }else { while(temp!null) { if(temp.key.equals(newNode.key)){ temp.valuevalue; flagtrue; }else { saveLastTemptemp; temptemp.next; } } if(!flag) { saveLastTemp.nextnewNode; } } } public int myHash(K key,int length) { int hash key.hashCode(); System.out.println(hash(length-1)); // System.out.println(hash%length); return hash(length-1); } public String toString() { StringBuilder sbBuilder new StringBuilder(); sbBuilder.append({); for (int i 0; i table.length; i) { Node2K,V tempNode2 table[i]; while(tempNode2!null) { sbBuilder.append(tempNode2.key:tempNode2.value,); tempNode2tempNode2.next; } } sbBuilder.setCharAt(sbBuilder.length()-1, }); return sbBuilder.toString(); } public Object get(K key) { int hash myHash(key, table.length); Node2K,V tempNode2table[hash]; V vObjectnull; while(tempNode2!null) { if(tempNode2.key.equals(key)) { vObject (V)tempNode2.value; break; }else { tempNode2tempNode2.next; } } return vObject; } public static void main(String[] args){ MyHashMapInteger,String s1new MyHashMap(); s1.put(10,aa); s1.put(20,bb); s1.put(30,cc); s1.put(11,cc); s1.put(26,cc); s1.put(27,cc); System.out.println(s1.get(50)); } }