Hash table with linear probing : HashTable Map « Collections Data Structure « Java






Hash table with linear probing

Hash table with linear probing
     
import java.io.IOException;

public class HashTable {
  private DataItem[] hashArray; 

  private int arraySize;

  private DataItem bufItem; // for deleted items

  public HashTable(int size) {
    arraySize = size;
    hashArray = new DataItem[arraySize];
    bufItem = new DataItem(-1); // deleted item key is -1
  }

  public void displayTable() {
    System.out.print("Table: ");
    for (int j = 0; j < arraySize; j++) {
      if (hashArray[j] != null)
        System.out.print(hashArray[j].getKey() + " ");
      else
        System.out.print("#");
    }
    System.out.println("");
  }

  public int hashFunction(int key) {
    return key % arraySize; 
  }

  public void insert(DataItem item){
    int key = item.getKey(); 
    int hashVal = hashFunction(key); // hash the key
    // until empty cell or -1,
    while (hashArray[hashVal] != null && hashArray[hashVal].getKey() != -1) {
      ++hashVal; // go to next cell
      hashVal %= arraySize; // wraparound if necessary
    }
    hashArray[hashVal] = item; // insert item
  }

  public DataItem delete(int key) {
    int hashVal = hashFunction(key); 

    while (hashArray[hashVal] != null) // until empty cell,
    { 
      if (hashArray[hashVal].getKey() == key) {
        DataItem temp = hashArray[hashVal]; // save item
        hashArray[hashVal] = bufItem; // delete item
        return temp;
      }
      ++hashVal; // go to next cell
      hashVal %= arraySize; // wraparound if necessary
    }
    return null; // can't find item
  }

  public DataItem find(int key) // find item with key
  {
    int hashVal = hashFunction(key); // hash the key

    while (hashArray[hashVal] != null) // until empty cell,
    { 
      if (hashArray[hashVal].getKey() == key)
        return hashArray[hashVal]; // found, return item
      ++hashVal; // go to next cell
      hashVal %= arraySize; // wraparound if necessary
    }
    return null; // can't find item
  }

  public static void main(String[] args) throws IOException {
    DataItem aDataItem;
    int aKey, size, initSize, keysPerCell;

    size = 150;
    initSize = 100;
    keysPerCell = 10;
    HashTable theHashTable = new HashTable(size);

    for (int j = 0; j < initSize; j++){
      aKey = (int) (java.lang.Math.random() * keysPerCell * size);
      aDataItem = new DataItem(aKey);
      theHashTable.insert(aDataItem);
    }

    theHashTable.displayTable();
    aDataItem = new DataItem(100);
    theHashTable.insert(aDataItem);

    theHashTable.delete(100);
    aDataItem = theHashTable.find(100);
    if (aDataItem != null) {
      System.out.println("Found " + 100);
    } else
      System.out.println("Could not find " + 100);
  }
}
class DataItem { 
  private int data; 

  public DataItem(int d) {
    data = d;
  }

  public int getKey() {
    return data;
  }
}


           
         
    
    
    
    
  








Related examples in the same category

1.Check if a particular key exists in Java Hashtable
2.Check if a particular value exists in Java Hashtable
3.Get Collection of Values from Java Hashtable
4.Get Set view of Keys from Java Hashtable
5.Get Size of Java Hashtable
6.Iterate through keys of Java Hashtable
7.Remove all values from Java Hashtable
8.Scan the content of a hashtable
9.Remove value from Java Hashtable
10.Sort keys in an Hashtable
11.Associates keys with valuesAssociates keys with values
12.Iterate through values of Java Hashtable
13.A simple Map implementationA simple Map implementation
14.Hash table with separate chaining
15.Hash table with double hashingHash table with double hashing
16.Working with Key-Value Pairs in a Hashtable
17.Demonstrate the Hashtable class, and an Enumeration
18.Demonstrate the HashMap class, and an IteratorDemonstrate the HashMap class, and an Iterator
19.Soft HashMap
20.MultiMap extends AbstractMap
21.Array Map extends AbstractMapArray Map extends AbstractMap
22.Demonstrating the WeakHashMapDemonstrating the WeakHashMap
23.Use treemapUse treemap
24.Sorting Elements in a TreeMapSorting Elements in a TreeMap
25.What you can do with a TreeMapWhat you can do with a TreeMap
26.A Map implemented with ArrayLists
27.Simple demonstration of HashMapSimple demonstration of HashMap
28.HashMap
29.Caching Hashtable
30.Hashtable that supports mostly-concurrent reading, but exclusive writing.
31.Lru Hashtable
32.Bucketized Hashtable
33.Custom hash table based on customized array