提供哈希表代码示例java
时间: 2024-03-03 20:45:55 浏览: 85
当然,我可以给你提供一个简单的哈希表代码示例,使用Java语言实现。以下是一个基本的哈希表类的示例代码:
```java
import java.util.ArrayList;
import java.util.LinkedList;
// 哈希表类
public class HashTable<K, V> {
private ArrayList<LinkedList<Entry<K, V>>> buckets;
private int capacity;
private int size;
// 哈希表的构造函数
public HashTable(int capacity) {
this.capacity = capacity;
this.size = 0;
this.buckets = new ArrayList<>(capacity);
for (int i = 0; i < capacity; i++) {
buckets.add(new LinkedList<>());
}
}
// 哈希表的put方法
public void put(K key, V value) {
int index = getIndex(key);
LinkedList<Entry<K, V>> bucket = buckets.get(index);
for (Entry<K, V> entry : bucket) {
if (entry.getKey().equals(key)) {
entry.setValue(value);
return;
}
}
bucket.add(new Entry<>(key, value));
size++;
}
// 哈希表的get方法
public V get(K key) {
int index = getIndex(key);
LinkedList<Entry<K, V>> bucket = buckets.get(index);
for (Entry<K, V> entry : bucket) {
if (entry.getKey().equals(key)) {
return entry.getValue(); }
}
return null;
}
// 哈希表的remove方法
public void remove(K key) {
int index = getIndex(key);
LinkedList<Entry<K, V>> bucket = buckets.get(index);
for (Entry<K, V> entry : bucket) {
if (entry.getKey().equals(key)) {
bucket.remove(entry);
size--;
return;
}
}
}
// 哈希表的大小
public int size() {
return size;
}
// 获取键的哈希值
private int getHash(K key) {
return key.hashCode();
}
// 根据键的哈希值计算索引
private int getIndex(K key) {
int hash = getHash(key);
return hash % capacity;
}
// 哈希表的Entry类
private static class Entry<K, V> {
private K key;
private V value;
public Entry(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
}
```
这是一个简单的哈希表实现,其中使用了链地址法解决哈希冲突。你可以使用`put`方法将键值对存储到哈希表中,使用`get`方法根据键获取对应的值,使用`remove`方法删除指定键的键值对,使用`size`方法获取哈希表的大小。
阅读全文