数据结构:数组+链表
思路:根据数据的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;
- }
- }