Hash table with double hashing : HashTable Map « Collections Data Structure « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JavaFX
25.JDK 6
26.JDK 7
27.JNDI LDAP
28.JPA
29.JSP
30.JSTL
31.Language Basics
32.Network Protocol
33.PDF RTF
34.Reflection
35.Regular Expressions
36.Scripting
37.Security
38.Servlets
39.Spring
40.Swing Components
41.Swing JFC
42.SWT JFace Eclipse
43.Threads
44.Tiny Application
45.Velocity
46.Web Services SOA
47.XML
Java » Collections Data Structure » HashTable Map 




Hash table with double hashing
Hash table with double hashing
     
import java.io.IOException;

public class HashTableWithDoubleHashing {
  private DataItem[] hashArray; 

  private int arraySize;

  private DataItem bufItem; // for deleted items

  HashTableWithDoubleHashing(int size) {
    arraySize = size;
    hashArray = new DataItem[arraySize];
    bufItem = new DataItem(-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 hashFunc1(int key) {
    return key % arraySize;
  }

  public int hashFunc2(int key) {
    return - key % 6;
  }

  public void insert(int key, DataItem item) {
    int hashVal = hashFunc1(key)// hash the key
    int stepSize = hashFunc2(key)// get step size
    // until empty cell or -1
    while (hashArray[hashVal!= null && hashArray[hashVal].getKey() != -1) {
      hashVal += stepSize; // add the step
      hashVal %= arraySize; // for wraparound
    }
    hashArray[hashVal= item; // insert item
  }

  public DataItem delete(int key) {
    int hashVal = hashFunc1(key)
    int stepSize = hashFunc2(key)// get step size

    while (hashArray[hashVal!= null) {
      if (hashArray[hashVal].getKey() == key) {
        DataItem temp = hashArray[hashVal]// save item
        hashArray[hashVal= bufItem; // delete item
        return temp; // return item
      }
      hashVal += stepSize; // add the step
      hashVal %= arraySize; // for wraparound
    }
    return null// can't find item
  }

  public DataItem find(int key) {
    int hashVal = hashFunc1(key)// hash the key
    int stepSize = hashFunc2(key)// get step size

    while (hashArray[hashVal!= null) {
      if (hashArray[hashVal].getKey() == key)
        return hashArray[hashVal]// yes, return item
      hashVal += stepSize; // add the step
      hashVal %= arraySize; // for wraparound
    }
    return null// can't find item
  }

  public static void main(String[] argsthrows IOException {
    int aKey;
    DataItem aDataItem;
    int size, initSize;
    size = 100;
    initSize = 10;
    HashTableWithDoubleHashing theHashTable = new HashTableWithDoubleHashing(
        size);
    for (int i = 0; i < initSize; i++) {
      aKey = (int) (java.lang.Math.random() * size);
      aDataItem = new DataItem(aKey);
      theHashTable.insert(aKey, aDataItem);
    }

    theHashTable.displayTable();
    aKey = 100;
    aDataItem = new DataItem(aKey);
    theHashTable.insert(aKey, aDataItem);
    aKey = 100;
    theHashTable.delete(aKey);
    aKey = 100;
    aDataItem = theHashTable.find(aKey);
    if (aDataItem != null)
      System.out.println("Found " + aKey);
    else
      System.out.println("Could not find " + aKey);
  }

}

class DataItem {
  private int data;

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

  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 linear probingHash table with linear probing
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
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.