hashCode() überschreiben

Shibas

Mitglied
Moin,

ich hab das problem das ich für meine Klasse die hashCode methode überschreiben möchte um einen eigenen algorithmus zu testen. Allerdings ist es so das die überschriebene Methode in meiner Klasse nie in meiner testmethode genutzt wird. Kann mir wer sagen was ich falsch mache?

mfg

Shibas

Java:
package core;

import java.util.Arrays;


public class Hashdaten {

	// local
	private String test = "test";
	private String[] db = null;
	private String[][] hashlist = null;
	private long time1 = 0;
	private long time2 = 0;
	private long time = 0;
	private Console c = null;
	private Node[] nodelist = null;

	// Konstruktor
	public Hashdaten(String[] db, Console c) {
		this.db = db;
		this.c = c;

	}

	public void test() {
		System.out.println(test.hashCode());
	}

	// Suchen
	public boolean search(String key) {

		return true;
	}

	// Einfügen
	public void insert(String key) {

	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Hashdaten other = (Hashdaten) obj;
		if (!Arrays.equals(db, other.db))
			return false;
		if (!Arrays.equals(hashlist, other.hashlist))
			return false;
		if (!Arrays.equals(nodelist, other.nodelist))
			return false;
		if (test == null) {
			if (other.test != null)
				return false;
		} else if (!test.equals(other.test))
			return false;
		return true;
	}

	@Override
	public int hashCode() {
		System.out.println("Test");
		final int prime = 31;
		int result = 1;
		result = prime * result + Arrays.hashCode(db);
		result = prime * result + Arrays.hashCode(hashlist);
		result = prime * result + Arrays.hashCode(nodelist);
		result = prime * result + ((test == null) ? 0 : test.hashCode());
		return result;
	}

	// HashCode Ende-----------------------------------------------------------

	// getter & setter
	public String[] getDb() {
		return db;
	}

	public void setDb(String[] db) {
		this.db = db;
	}

}
 

Shibas

Mitglied
ich hab in der überschriebenen methode eine consolen ausgabe eingefügt nur diese taucht nicht auf von daher wird meiner meinung nach immer noch die normale hashCode Methode aufgerufen.

Das einzige worüber ich mir nicht sicher bin ist ob ich zum überschreiben meine klasse noch durch irgendeine erweitern muss aber ich wüsste da jetzt nicht welche.
 

XHelp

Top Contributor
Da gibt es doch nicht mal eine main-Methode, was willst du denn da aufrufen? Es muss ja auch noch eine Klasse geben, die
Code:
Hashdaten
verwendet.
Falls du darauf hinaus willst, dass die
Code:
test
-Methode was anderes liefert, dann ist das klar: du gibst ja auch den Hashcode von einem String :bahnhof:
 

Marco13

Top Contributor
Java:
public class HashdatenTest {
    public static void main(String args[])
    {
        Hashdaten h = new Hashdaten(null, null);
        Map map = new HashMap();
        map.put(h,h);
    }
}

Gibt "Test" aus...
 

Shibas

Mitglied
Ok ich hab damit mal ausprobiert und es wird auch "Test" ausgeben weil er in die Methode von mir reingeht.

System.out.println(test.hashCode());

ruft allerdings immernoch die standard methode auf egal wie ich den algorithmuss in meiner methode ändere der wert von hashCode ist weiterhin 3556498
 

eRaaaa

Top Contributor
Ok ich hab damit mal ausprobiert und es wird auch "Test" ausgeben weil er in die Methode von mir reingeht.

System.out.println(test.hashCode());

ruft allerdings immernoch die standard methode auf egal wie ich den algorithmuss in meiner methode ändere der wert von hashCode ist weiterhin 3556498

Das hat dir doch XHelp bereits beantwortet, das kommt weil du hashcode nicht auf dem Objekt deiner Klasse aufrufst, sondern von dem String-Objekt!
Du hast also nichts anderes als:
Java:
	public static void main(String[] args)  {
		System.out.println("test".hashCode());
	}

Du suchst wohl viel mehr
Java:
    public void test() {
        System.out.println(this.hashCode());
    }

???:L
 

XHelp

Top Contributor
Wie schon gesagt, das wird auch so bleiben. test ist doch eine Instanz von
Code:
String
und du änderst den HashCode von
Code:
Hashdaten
. Den Hashcode von String wirst du auch nicht ändern können, da man die Klasse String nicht verändern kann.
 

Shibas

Mitglied
Ok dann muss ich mit meinen prof nochmal rücksprache halten. Wir sollen den hashCode von String überschreiben damit wir nen eigenen algorithmus statt

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

erstellen sollen aber wenn das so nicht funktioniert weiss ich jetzt auch nicht was ich machen soll :(
 

eRaaaa

Top Contributor
Ok dann muss ich mit meinen prof nochmal rücksprache halten. Wir sollen den hashCode von String überschreiben damit wir nen eigenen algorithmus statt

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

erstellen sollen aber wenn das so nicht funktioniert weiss ich jetzt auch nicht was ich machen soll :(

Vermutlich hast du nur die Aufgabe falsch interpretiert...wie lautet denn die genaue Aufgabenstellung?!
 

Shibas

Mitglied
Bauen Sie eine Hashtabelle mit Verkettung der Überläufer auf und führen darauf die beschriebenen Suchvorgänge aus. Die Klassen HashSet, LinkedList dürfen nicht verwendet werden. Zusätzliche Angaben:

- Programmieren Sie zur Verkettung der Überläufer eine verkettete Liste.
- Programmieren Sie 2-3 verschiedene Hash-Funktionen für Strings. Erläutern Sie die
Hash-Funktionen. Überschreiben Sie dazu die Methode hashCode.
- Halten Sie die Größe der Hashtabelle variabel. Erperimentieren Sie mit verscheidenen
Größen.
- Mit welchen Wahlen zu Hashfunktion und Größe der Hashtabelle erzielen Sie gute
Ergebnisse bzgl. der Aufwände für Aufbau und Suchvorgänge.
 

XHelp

Top Contributor
Du könntest eine Klasse erstellen, die den String gespeichert hält, aber einen eigenen hashCode hat:
Java:
public class DeinString {
  private String s;
  public DeinString(String s) {
    this.s = s;
  }

  public boolean equals(Object obj) {
    if (obj instanceof String) {
      return s.equals((String) obj);
    } else {
      return false;
    }
  }

  public int hashCode() {
    //hier eben die HashCode berechnung anhand von String s
  }
}
 

Shibas

Mitglied
Danke erstmal ich werde das mal ausprobieren vielleicht finde ich noch eine möglichkeit die umleitung in der klasse selber zu machen^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
neurox Tutorial equals und hashCode überschreiben Java Basics - Anfänger-Themen 33
S HashCode überschreiben! Java Basics - Anfänger-Themen 17
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
G HashCode für Indexberechnung im Array Java Basics - Anfänger-Themen 2
E hashCode implementierung Java Basics - Anfänger-Themen 9
M hashcode Java Basics - Anfänger-Themen 3
T hashCode-Kontrakt Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
M Frage zu HashCode Methode in Java Java Basics - Anfänger-Themen 7
M Hashcode als lesbarer String Java Basics - Anfänger-Themen 1
S Hashcode - Operator ^ Java Basics - Anfänger-Themen 11
G 64 Bit Hashcode erstellen aus String Java Basics - Anfänger-Themen 11
K hashCode() Java Basics - Anfänger-Themen 2
C hashCode() bei Klassen, die nicht immutable sind Java Basics - Anfänger-Themen 27
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
H Hashcode aus Datei erzeugen Java Basics - Anfänger-Themen 7
B Hashcode Java Basics - Anfänger-Themen 25
T Code in hashCode Java Basics - Anfänger-Themen 2
T equals() und hashCode() Java Basics - Anfänger-Themen 7
A HashCode Überschreiben Java Basics - Anfänger-Themen 2
H Suche spezifische Eigenschaft von Object - sowas wie ".hashCode()" Java Basics - Anfänger-Themen 4
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
E hashCode bei Objekten Java Basics - Anfänger-Themen 14
B Frage zu equals() und hashCode() Java Basics - Anfänger-Themen 28
A veränderbar kanonische Klassen: Methode equals, hashcode, serializable Java Basics - Anfänger-Themen 5
M Fehler im HashCode()! Java Basics - Anfänger-Themen 12
S equals() - hashCode() - Contract Java Basics - Anfänger-Themen 54
D HashCode eines Objekts Java Basics - Anfänger-Themen 5
R Vergleiche mit Equals(), hashCode() und == Java Basics - Anfänger-Themen 10
M HashCode von java.io.File - Wurde die Datei geändert ? Java Basics - Anfänger-Themen 2
B Hashcode?Was ist das und wozu? Java Basics - Anfänger-Themen 2
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T Printwriter Datei nicht überschreiben Java Basics - Anfänger-Themen 10
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
E Slider - Wert übergeben und überschreiben Java Basics - Anfänger-Themen 5
E Ausgabe überschreiben Java Basics - Anfänger-Themen 15
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
C Methoden überschreiben Java Basics - Anfänger-Themen 3
Jinnai4 Clipboard überschreiben? Java Basics - Anfänger-Themen 11
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
D .txt überschreiben mit BufferedWriter ohne reset Java Basics - Anfänger-Themen 6
neerual Feld mit Einsen und Nullen füllen und überschreiben Java Basics - Anfänger-Themen 1
N awt: vererbte Methode überschreiben Java Basics - Anfänger-Themen 3
M Zeile in datei überschreiben Java Basics - Anfänger-Themen 5
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
F Werte in 2D-Array mit anderem 2D-Array überschreiben Java Basics - Anfänger-Themen 2
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
K StringBuilder Objekt überschreiben - Speicherverbrauch Java Basics - Anfänger-Themen 3
J JTable Wert gleich überschreiben Java Basics - Anfänger-Themen 6
K compareTo(String arg) überschreiben Java Basics - Anfänger-Themen 4
M Warum soll man die Finanlize Methode nicht überschreiben und aufrufen? Java Basics - Anfänger-Themen 2
P Fehler bei überschreiben eines Eintrags Java Basics - Anfänger-Themen 2
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
B Werte eines Arrays überschreiben. Java Basics - Anfänger-Themen 3
L Eclipse Projekt überschreiben Java Basics - Anfänger-Themen 4
H Methoden "Leeren" Speicher auf der Festplatte überschreiben Java Basics - Anfänger-Themen 8
J Methode von Subklassen einzeln überschreiben Java Basics - Anfänger-Themen 12
R variable überschreiben schlägt fehl Java Basics - Anfänger-Themen 13
B To String Metode überschreiben? Java Basics - Anfänger-Themen 30
F Methode überschreiben Java Basics - Anfänger-Themen 9
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
F Variablen String-Array wird ungewollt "überschreiben" Java Basics - Anfänger-Themen 7
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
M xml log4j überschreiben für/in Java Klassen Java Basics - Anfänger-Themen 4
D Methode überschreiben Java Basics - Anfänger-Themen 2
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
B JLabel löschen/überschreiben Java Basics - Anfänger-Themen 10
J Variablen überschreiben innerhalb einer Klasse Java Basics - Anfänger-Themen 7
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
Z Kann actionPerformed(ActionEvent) nicht überschreiben Java Basics - Anfänger-Themen 8
4 sysout überschreiben Java Basics - Anfänger-Themen 2
M Equals überschreiben Java Basics - Anfänger-Themen 3
J Variablen überschreiben Java Basics - Anfänger-Themen 17
M Methode von einem Object überschreiben Java Basics - Anfänger-Themen 5
M OOP Methode überschreiben mit String-Paramter unterschiedlicher Größe? Java Basics - Anfänger-Themen 19
E Zeile innerhalb Datei überschreiben Java Basics - Anfänger-Themen 2
S Methode einer kompilierten .jar überschreiben Java Basics - Anfänger-Themen 9
c_sidi90 Excelfile bearbeiten ohne zu überschreiben? Java Basics - Anfänger-Themen 25
K Methode überschreiben - neuen Fehler Werfen? Java Basics - Anfänger-Themen 6
G Klasse überschreiben wenn Rückgabe über Methode Java Basics - Anfänger-Themen 6
A JFileChooser - ungefragtes überschreiben Java Basics - Anfänger-Themen 12
M .txt Datei überschreiben Java Basics - Anfänger-Themen 8
H jZable - Zelle direkt überschreiben Java Basics - Anfänger-Themen 3
F Verschachtelte Arrays kopieren und überschreiben Java Basics - Anfänger-Themen 4
I Variable überschreiben Java Basics - Anfänger-Themen 5
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
calzone FileReader, lesen ohne die Datei zu überschreiben? Java Basics - Anfänger-Themen 3
S Welche Methode in JFrame überschreiben? Java Basics - Anfänger-Themen 12
B Klasse überschreiben Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben