package holiday.day06;
public class Node2 {
int hash;
Integer key;
int value;
Node2 next;
@Override
public String toString() {
return "Node2{" +
"hash=" + hash +
", key=" + key +
", value=" + value +
", next=" + next +
'}';
}
}
package holiday.day06;
public class MyHashMap {
//Node2 newNode;
private Node2[] table;
public MyHashMap() {
table = new Node2[16];
}
public void put(Integer key, int value){
Node2 newNode = new Node2();
newNode.hash = myHash(key.hashCode(), table.length);
newNode.key=key;
newNode.value=value;
newNode.next=null;
Node2 temp=table[newNode.hash];
boolean keyReapt=false;
Node2 iterLast = null;
if(temp==null){
table[newNode.hash]=newNode;
}else{
while(temp != null){
iterLast = temp;
temp = temp.next;
if(temp!=null && temp.key.intValue() == key.intValue()){ //键重复,直接覆盖value
keyReapt=true;
temp.value=value;
break;
}
}
if(!keyReapt){
iterLast.next = newNode;
}
}
}
public int myHash(int v, int length){
return v&(length-1);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
for(int i=0; i<table.length; i++){
Node2 node = table[i];
while(node!=null){
sb.append(node.key+":"+node.value+",");
node = node.next;
//sb.append(node.value);
}
}
sb.setCharAt(sb.length()-1,'}');
return sb.toString();
}
public static void main(String[] args) {
MyHashMap m1 = new MyHashMap();
for(int i=0; i<20; i++){
m1.put(i,i);
}
/*for (Node2 node:m1.table) {
while(node!=null){
System.out.println(node.toString());
node = node.next;
}
}*/
System.out.println();
System.out.println(m1.toString());
}
}