Algoritmos > Tabla Hash
by academiax
JavaScript
class HashTable {
constructor(size) {
this.size = size; // Tamaño de la tabla hash
this.table = new Array(size); // Crear un array para almacenar los elementos
}
hash(key) {
let hash = 0;
for (let i = 0; i < key.length; i++) {
hash += key.charCodeAt(i); // Sumar los códigos ASCII de los caracteres de la clave
}
return hash % this.size; // Tomar el módulo del tamaño para obtener el índice
}
insert(key, value) {
const index = this.hash(key); // Calcular el índice usando la función hash
if (!this.table[index]) {
this.table[index] = []; // Crear una lista en el índice si no existe
}
this.table[index].push({ key, value }); // Agregar el elemento a la lista en el índice
}
search(key) {
const index = this.hash(key); // Calcular el índice usando la función hash
if (this.table[index]) {
for (let i = 0; i < this.table[index].length; i++) {
if (this.table[index][i].key === key) {
return this.table[index][i].value; // Devolver el valor si se encuentra la clave
}
}
}
return undefined; // Devolver undefined si no se encuentra la clave
}
remove(key) {
const index = this.hash(key); // Calcular el índice usando la función hash
if (this.table[index]) {
for (let i = 0; i < this.table[index].length; i++) {
if (this.table[index][i].key === key) {
this.table[index].splice(i, 1); // Eliminar el elemento de la lista en el índice
return;
}
}
}
}
}
// Ejemplo de uso
const myHashTable = new HashTable(10); // Crear una nueva tabla hash con tamaño 10
myHashTable.insert("apple", "red"); // Insertar "apple" con valor "red"
myHashTable.insert("banana", "yellow"); // Insertar "banana" con valor "yellow"
myHashTable.insert("grape", "purple"); // Insertar "grape" con valor "purple"
console.log(myHashTable.search("apple")); // Buscar "apple" y devolver su valor...