seperate chaining
Fri Jun 07 2024 14:01:40 GMT+0000 (Coordinated Universal Time)
Saved by @dbms
import java.util.LinkedList;
class KeyValuePair<K, V> {
private K key;
private V value;
public KeyValuePair(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
}
class SeparateChaining<K, V> {
private LinkedList<KeyValuePair<K, V>>[] table;
private int capacity;
@SuppressWarnings("unchecked")
public SeparateChaining(int capacity) {
this.capacity = capacity;
this.table = new LinkedList[capacity];
for (int i = 0; i < capacity; i++) {
table[i] = new LinkedList<>();
}
}
private int hash(K key) {
return Math.abs(key.hashCode() % capacity);
}
public void put(K key, V value) {
int index = hash(key);
LinkedList<KeyValuePair<K, V>> list = table[index];
for (KeyValuePair<K, V> pair : list) {
if (pair.getKey().equals(key)) {
pair = new KeyValuePair<>(key, value);
return;
}
}
list.add(new KeyValuePair<>(key, value));
}
public V get(K key) {
int index = hash(key);
LinkedList<KeyValuePair<K, V>> list = table[index];
for (KeyValuePair<K, V> pair : list) {
if (pair.getKey().equals(key)) {
return pair.getValue();
}
}
return null;
}
public void remove(K key) {
int index = hash(key);
LinkedList<KeyValuePair<K, V>> list = table[index];
for (KeyValuePair<K, V> pair : list) {
if (pair.getKey().equals(key)) {
list.remove(pair);
return;
}
}
}
public void display() {
for (int i = 0; i < capacity; i++) {
System.out.print("Bucket " + i + ": ");
for (KeyValuePair<K, V> pair : table[i]) {
System.out.print("[" + pair.getKey() + ": " + pair.getValue() + "] ");
}
System.out.println();
}
}
}
public class SeparateChainingExample {
public static void main(String[] args) {
SeparateChaining<String, Integer> map = new SeparateChaining<>(5);
map.put("John", 25);
map.put("Alice", 30);
map.put("Bob", 35);
map.put("Doe", 40); // Adding more elements to see separate chaining in action
map.put("Eve", 45);
System.out.println("Initial Map:");
map.display();
System.out.println("\nAlice's age: " + map.get("Alice"));
System.out.println("Bob's age: " + map.get("Bob"));
map.remove("Alice");
System.out.println("\nMap after removing Alice:");
map.display();
System.out.println("Alice's age after removal: " + map.get("Alice"));
}
}



Comments