Hashing und Hashtabellen

Status
Nicht offen für weitere Antworten.

festplatte24

Mitglied
Hallo Leute,

ich hab mir zum Üben die Aufgabe gegeben, mal eine Hashtabelle zu erstellen (Hashtabelle ? Wikipedia) um darin Werte speichern zu können. Doch bei mir will es schon am Anfang nicht ganz funktionieren. Woran kann es liegen?

Hier mal mein Quelltext:
Java:
import java.lang.*;

class HashFeld {
	int wert;
	boolean besetzt;
	
	public HashFeld() {
		wert = 0;
		besetzt = false;
	}
	
	public void setzeWert(int w) {
		System.out.println("Wert vom Feld wird auf " + wert + " gesetzt");
		wert = w;
		besetzen();
	}
	
	public int gibWert() {
		return wert;
	}
	
	public void besetzen() {
		besetzt = true;
	}
	
	public void freimachen() {
		besetzt = false;
	}
	
	public boolean istBesetzt() {
		return besetzt;
	}
}

public class Hashing {
	public static void main(String[] args) {
		HashFeld[] hashtabelle = new HashFeld[20];
		
		int a = findeHashPos(12, 7);
		System.out.println("Hashposition in der Tabelle: " + a);
		hashtabelle[a].setzeWert(12);
		System.out.println("Wert in Position " + a + ": " + hashtabelle[a].gibWert());
	}
	
	public static int findeHashPos(int x, int teiler) {
		int erg = 0;
				
		erg = x % teiler;
		
		System.out.println("*findeHashPos*");
		System.out.println("x: " + x);
		System.out.println("teiler: " + teiler);
		System.out.println("erg: " + erg);
		
		return erg;
	}
}
 

Schandro

Top Contributor
Java:
HashFeld[] hashtabelle = new HashFeld[20];
heisst NICHT das auch 20 Instanzen von HashFeld erstellt werden.

Du musst erst die Instanz ersellen bevor du sie benutzen kannst, z.b. so:
Java:
hashtabelle[a] = new HashFeld();
hashtabelle[a].setzeWert(12);
 

Schandro

Top Contributor
Warum eigentlich?
Weil alles andere Schwachsinn wäre.

0. Ein Programmierer muss bei solchen Sachen selber entscheiden können was passiert und es nicht von der Programmiersprache vorgeschrieben bekommen. Selbst wenn es in 95% der Fälle so ist, das sich das Array automatisch mit Instanzen füllen soll. Was ist mit den anderen 5% der Fälle? (in Wahrheit sinds mehr). Solln die dann auf ne andere Programmiersprache wechseln? ^^
1. Durch mehrere Konstruktoren gibt es auch unterschiedliche Arten durch die ein Object erzeugt werden kann.
2. Schonmal was von Polymorphie gehört? Nur weil eine Variable vom Typ XXX ist, heisst das nicht, das nur Instanzen der Klasse XXX da drin liegen können...
3. Es gibt viele Einsatzgebiete von Arrays, wo diese nicht direkt bei der Erstellung mit Inhalt befüllt werden sollen, sondern erst im weiteren Programmablauf.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben