c写hashmap代码
时间: 2023-04-07 13:02:01 浏览: 54
我可以回答这个问题。HashMap是一种基于哈希表的数据结构,它可以用来存储键值对。以下是一个简单的HashMap实现的代码示例:
```
public class MyHashMap<K, V> {
private static final int DEFAULT_CAPACITY = 16;
private Node<K, V>[] table;
private int size;
public MyHashMap() {
table = new Node[DEFAULT_CAPACITY];
}
public void put(K key, V value) {
int hash = key.hashCode();
int index = hash % table.length;
Node<K, V> node = table[index];
while (node != null) {
if (node.key.equals(key)) {
node.value = value;
return;
}
node = node.next;
}
Node<K, V> newNode = new Node<>(key, value);
newNode.next = table[index];
table[index] = newNode;
size++;
}
public V get(K key) {
int hash = key.hashCode();
int index = hash % table.length;
Node<K, V> node = table[index];
while (node != null) {
if (node.key.equals(key)) {
return node.value;
}
node = node.next;
}
return null;
}
public void remove(K key) {
int hash = key.hashCode();
int index = hash % table.length;
Node<K, V> node = table[index];
Node<K, V> prev = null;
while (node != null) {
if (node.key.equals(key)) {
if (prev == null) {
table[index] = node.next;
} else {
prev.next = node.next;
}
size--;
return;
}
prev = node;
node = node.next;
}
}
public int size() {
return size;
}
private static class Node<K, V> {
K key;
V value;
Node<K, V> next;
public Node(K key, V value) {
this.key = key;
this.value = value;
}
}
}
```