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.
/** | |
* | |
* @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"); | |
} | |
} | |
} | |
} | |
Komentar
Posting Komentar