Lab Activity 3.1

HashProvider.java

public interface HashProvider<K> {
    int hashKey(K key, int tableSize);
}

HashTable.java

import java.util.Optional;

public interface HashTable<K,V> {
    void put(K key,V value);

    Optional<V> get(K key);

    void remove(K key);
}

OpenAddrHashTable.java

import java.util.Optional;

public class OpenAddrHashTable<K, V> implements HashTable<K, V> {
    private final HashProvider<K> hashProvider;
    private Pair<K, V>[] array;

    public OpenAddrHashTable(int capacity, HashProvider<K> hashProvider) {
        array = new Pair[capacity];
        this.hashProvider = hashProvider;
    }

    public void put(K key, V value) {
        // write your code here
    }

    private int searchPosition(K key) {
        // write your code here
    }

    public void remove(K key) {
        // write your code here
    }

    public Optional<V> get(K key) {
        // write your code here
        return Optional.empty();
    }
}

OpenAddrPair.java

public class OpenAddrPair<K, V> {
    private final K key;
    private final V value;
    private boolean deleted;

    public OpenAddrPair(K key, V value) {
        this.key = key;
        this.value = value;
        this.deleted = false;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }

    public boolean isDeleted() {
        return deleted;
    }

    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }
}

Pair.java

public class Pair<K, V> {
    private final K key;
    private final V value;

    public Pair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public K getKey() {
        return key;
    }

    public V getValue() {
        return value;
    }
}

RemainderHashing.java

public class RemainderHashing implements HashProvider<Integer>{

    public int hashKey(Integer key, int tableSize) {
        return key % tableSize;
    }

    public static void main(String[] args) {
        RemainderHashing remainderHashing = new RemainderHashing();
        System.out.println(remainderHashing.hashKey(337481990, 1000));
        System.out.println(remainderHashing.hashKey(116241990, 1000));
        System.out.println(remainderHashing.hashKey(983611990, 1000));
        System.out.println(remainderHashing.hashKey(201031990, 1000));

        System.out.println(remainderHashing.hashKey(337481990, 1447));
        System.out.println(remainderHashing.hashKey(116241990, 1447));
        System.out.println(remainderHashing.hashKey(983611990, 1447));
        System.out.println(remainderHashing.hashKey(201031990, 1447));
    }
}

Last updated