Map类
package com.自己实现HashMap;
import java.util.Arrays;
import java.util.Objects;
public class MyHashMap<K, V> {
Node<K, V>[] table;
Integer MAPLENGTH=8;
Integer size=0;
public MyHashMap() {
table = new Node[MAPLENGTH];
}
@Override
public String toString() {
return "MyHashMap{" +
"table=" + Arrays.toString(table) +
", MAPLENGTH=" + MAPLENGTH +
", size=" + size +
'}';
}
public int size() {
return size;
}
public Object get(K key) {
return null;
}
public Object remove(K key) {
return null;
}
public void put(K key, V value) {
int hash = key.hashCode();
int i = hash % 8;
if (traversalRepetition(key, value, table[i])) return;
addNode(key, value, i);
}
private boolean traversalRepetition(K key, V value, Node<K, V> node1) {
for (Node node = node1; node != null; node = node.nodeNext) {
if (key.equals(node.key)) {
node.value = value;
return true;
}
}
return false;
}
private void addNode(K key, V value, int i) {
table[i] = new Node<K, V>(key, value, table[i]);
size++;
}
/**
* 节点对象内部类
* @param <K>
* @param <V>
*/
class Node<K, V> {
private K key;
private V value;
private Node nodeNext;
public Node(K key, V value) {
this.key = key;
this.value = value;
}
public Node(K key, V value, Node nodeNext) {
this.key = key;
this.value = value;
this.nodeNext = nodeNext;
}
public Node() {
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
public Node getNodeNext() {
return nodeNext;
}
public void setNodeNext(Node nodeNext) {
this.nodeNext = nodeNext;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Node<?, ?> hashNode = (Node<?, ?>) o;
return Objects.equals(key, hashNode.key) &&
Objects.equals(value, hashNode.value) &&
Objects.equals(nodeNext, hashNode.nodeNext);
}
@Override
public int hashCode() {
return Objects.hash(key, value, nodeNext);
}
@Override
public String toString() {
return "HashNode{" +
"key=" + key +
", value=" + value +
", nodeNext=" + nodeNext +
'}';
}
}
}
测试类
package com.自己实现HashMap;
public class Test {
public static void main(String[] args) {
MyHashMap<Object, Object> objectObjectMyHashMap = new MyHashMap<>();
objectObjectMyHashMap.put("xxx", "12345");
objectObjectMyHashMap.put("xxx", "45657");
objectObjectMyHashMap.put("xxx", "45677");
objectObjectMyHashMap.put(18,"gzh");
objectObjectMyHashMap.put(26,"dyq");
System.out.println(objectObjectMyHashMap);
System.out.println();
}
}
测试结果
![]()