数据结构:数组+链表
思路:根据数据的key值计算出相应的hsah值,然后再数组中找到相应的槽位将数据放进去。
放进去前要先进行判断,
假如槽位没有数据就直接放进去;
假如槽位已有数据,
但是这个key的值和key的值相同,那就替换槽位中的value值,
假如key值不同,那就再这个槽位接一个链表,将数据放链表中。
代码(自写简易,用于理解)
public class MyHasshMap {
private Node[] nodes= new Node[10000];
private int a;
void put(String key,String value){
a = key.hashCode();
if(nodes[a]==null){
Node node = new Node(key,value);
nodes[a] = node;
}
else{
if(key.equals(nodes[a].key)){
//替换
nodes[a].value=value;
}
else{
//如果不等,那就在这个节点接一个链表。如果还有key有相同的哈希值,就继续接下去。
}
}
}
String get(String key){
int a = key.hashCode();
return nodes[a].value;
}
}
class Node{
int a;
String key;
String value;
public Node(String key, String value) {
this.key = key;
this.value = value;
}
}