TestHashtable

import java.io.*;
import algorithmen.*;

public class TestHashtable {
  
  public static void main(String[] args) throws IOException {
    
    IOTools io = new IOTools();
    
    // Art und Größe der Hashtabelle abfragen
    boolean simple = io.jaOderNein("Einfache Hashtabelle");
    int größe = io.holeInt("Größe der Hashtabelle eingeben:");
    SimpleHashtable tabelle;
    if (simple) {
      tabelle = new SimpleHashtable(größe);
    } else {
      tabelle = new Hashtable(größe);
    }
    
    // Ergebnisse = Werte jeweils bei 10%, 20% etc bis 90%
    double[] ergebnisse = new double[9];
    int chunksize = größe/10;
    
    // häppchenweise mit Zufallszahlen füttern
    double key;
    for (int i = 0; i < 9; i++) {
      // entsprechend viele Zufallszahlen besorgen
      for (int j = 0; j < chunksize; j++) {
        key = 10000*Math.random();
        tabelle.put(key);
      }
      ergebnisse[i] = tabelle.anzahlKollisionen();
    }
    
    // Ergebnisse ausgeben
    System.out.println("Füllgrad    Zahl der Kollisionen pro put-Operation");
    for (int i = 0; i < 9; i++) {
      double val = ergebnisse[i]/(chunksize*(i+1));
      System.out.println("  " + (10*(i+1)) + "%               " + val);
    }
  }
}