用最主流的编程语言写一段哈希表的增删查改功能
时间: 2023-03-08 14:42:34 浏览: 64
最主流的编程语言可能是 Java、C++ 或者 Python,下面是用 Java 写出的哈希表增删查改功能://增
public void add(Object key, Object value) {
map.put(key, value);
}//删
public void remove(Object key) {
map.remove(key);
}//查
public Object get(Object key) {
return map.get(key);
}//改
public void set(Object key, Object value) {
map.put(key, value);
}
相关问题
用java编程语言写个哈希表
以下是一个简单的哈希表实现,使用Java编程语言:
```java
public class HashTable {
private final int TABLE_SIZE = 128;
private HashEntry[] table;
public HashTable() {
table = new HashEntry[TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; i++) {
table[i] = null;
}
}
public void put(int key, int value) {
int hash = key % TABLE_SIZE;
while (table[hash] != null && table[hash].getKey() != key) {
hash = (hash + 1) % TABLE_SIZE;
}
table[hash] = new HashEntry(key, value);
}
public int get(int key) {
int hash = key % TABLE_SIZE;
while (table[hash] != null && table[hash].getKey() != key) {
hash = (hash + 1) % TABLE_SIZE;
}
if (table[hash] == null) {
return -1;
} else {
return table[hash].getValue();
}
}
public void remove(int key) {
int hash = key % TABLE_SIZE;
while (table[hash] != null && table[hash].getKey() != key) {
hash = (hash + 1) % TABLE_SIZE;
}
table[hash] = null;
}
private class HashEntry {
private int key;
private int value;
public HashEntry(int key, int value) {
this.key = key;
this.value = value;
}
public int getKey() {
return key;
}
public int getValue() {
return value;
}
}
}
```
这个哈希表实现使用了线性探测法解决哈希冲突。当插入一个元素时,首先计算该元素的哈希值,然后如果对应的位置已经有元素,就向后寻找下一个位置,直到找到一个空位置为止。当查找一个元素时,同样计算哈希值,然后如果对应的位置不为空且不是要查找的元素,就向后寻找下一个位置,直到找到要查找的元素或一个空位置为止。当删除一个元素时,同样计算哈希值,然后如果对应的位置不为空且不是要删除的元素,就向后寻找下一个位置,直到找到要删除的元素或一个空位置为止。
用 C 语言写一个哈希表
这是一个使用 C 语言实现哈希表的简单示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TABLE_SIZE 10
typedef struct {
char *key;
char *value;
} HashEntry;
typedef struct {
HashEntry *entry;
} HashTable;
HashTable *create_hash_table() {
HashTable *table = (HashTable *)malloc(sizeof(HashTable));
table->entry = (HashEntry *)malloc(sizeof(HashEntry) * TABLE_SIZE);
for (int i = 0; i < TABLE_SIZE; i++) {
table->entry[i].key = NULL;
table->entry[i].value = NULL;
}
return table;
}
int hash(char *key) {
int sum = 0;
for (int i = 0; i < strlen(key); i++) {
sum += key[i];
}
return sum % TABLE_SIZE;
}
void put(HashTable *table, char *key, char *value) {
int index = hash(key);
while (table->entry[index].key != NULL) {
if (strcmp(table->entry[index].key, key) == 0) {
break;
}
index = (index + 1) % TABLE_SIZE;
}
table->entry[index].key = key;
table->entry[index].value = value;
}
char *get(HashTable *table, char *key) {
int index = hash(key);
while (table->entry[index].key != NULL) {
if (strcmp(table->entry[index].key, key) == 0) {
return table->entry[index].value;
}
index = (index + 1) % TABLE_SIZE;
}
return NULL;
}
int main() {
HashTable *table = create_hash_table();
put(table, "foo", "bar");
put(table, "hello", "world");
printf("%s\n", get(table, "foo"));
printf("%s\n", get(table, "hello"));
return 0;
}
```
这个示例实现了哈希表的基本功能,包括创建哈希表、插入元素、查找元素。这里使用了链地址法来解决冲突。