Implementasi Hash Table

 


Hash Table adalah sebuah struktur data untuk memetakan kunci-kunci ke nilai-nilai (juga disebut Tipe Data Abstrak (Abstract Data Type, ADT) Table atau Map). Hash Table menggunakan sebuah fungsi hash untuk memetakan kunci-kunci besar ataupun bukan bilangan bulat ke indeks-indeks dalam range kecil (biasanya [0...hash_table_size-1])

Terdapat beberapa strategi-strategi untuk memecahkan masalah tabrakan (collision resolution) yang akan disorot di visualisasi ini: Pengalamatan Terbuka (Open Addressing) (Linear Probing, Quadratic Probing, dan Double Hashing) dan Pengalamatan Tertutup (Closed Addressing) (Separate Chaining). Cobalah klik Search(8) untuk sebuah animasi contoh pencarian sebuah nilai di dalam Table Hash menggunakan teknik Separate Chaining.

Sebuah Tabel Hash adalah struktur data yang menggunakan fungsi hash untuk memetakan secara efisien kunci-kunci ke nilai-nilai (ADT Tabel atau Map), untuk pencarian/pengambilan, pemasukkan, dan/atau penghapusan yang efisien.

Tabel Hash sering digunakan di berbagai perangkat lunak komputer, terutama untuk larik-larik asosiatif, indeks basis data, caches, dan sets.

Berikut Implementasi bahasa java  Hash Table :

/**
*
* @author Afira Rolobessy
*/
import java.util.*;
public class Phonebook
{
public static int hashFunction(String name){
int hash = 0;
for(int i=0; i<name.length(); i++){
hash = hash*10 + name.charAt(i);
}
hash = hash % 499;
return hash;
}
public static void main(String args[]){
Hashtable<Integer, String> phonebook = new Hashtable<>();
List<String> names = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
int option = -1;
String number;
String name;
while(option != 0){
// User Taunt
System.out.println("Please select:\n1. Add contact\n2. Search for contacts\n3. Delete contact\n4. See all\n0. Exit");
option = sc.nextInt();
switch(option){
case 1:
System.out.println("No phone:");
number = sc.next();
System.out.println("contact name:");
name = sc.next();
names.add(name);
phonebook.put(hashFunction(name), number);
System.out.println("Contact has been added");
break;
case 2:
System.out.println("Enter contact name:");
name = sc.next();
number = phonebook.get(hashFunction(name));
System.out.println("No phone: " + number);
break;
case 3:
System.out.println("Enter contact name:");
name = sc.next();
names.remove(name);
phonebook.remove(hashFunction(name));
System.out.println("Contact has been deleted");
break;
case 4:
if(phonebook.size() > 0){
System.out.println(phonebook.size() + " saved contacts");
for(String i : names){
System.out.println(i + ": " + phonebook.get(hashFunction(i)));
}
}
else
System.out.println("No saved contacts");
}
}
}
}
view raw Phonebook hosted with ❤ by GitHub
Berikut Output :

Komentar

Postingan Populer