Wie ruft ich aus jedem Eimer ab, den der HashCode gespeichert hat? [geschlossen]Java

Java-Forum
Anonymous
 Wie ruft ich aus jedem Eimer ab, den der HashCode gespeichert hat? [geschlossen]

Post by Anonymous »

In Java für einen Hashset und HashMap muss die HashCode () Methode einer benutzerdefinierten Klasse (d. H. Person , Produkt , usw.) überschrieben werden. Methode (durch ein Bucket )
[*] Überprüfen Sie die Existenz eines -Elements mit der entsprechenden Methode (erneut über einen bucket )

ist natürlich auch die gleiche mandatorische ()
Über die Berichterstattung < /p>
for(Product product: products) {
System.out.println(product.toString() + " - " + product.hashCode());
}
[/code]
Es erstellt einen einfachen Bericht.

Code: Select all

assertTrue(products.contains(new Product("cod-001", "Guitar Samick", 100.00))); //passes
assertTrue(products.contains(new Product("cod-002", "Guitar Bass Ibanez", 200.00))) //passes
assertTrue(products.contains(new Product("cod-003", "Guitar Fender", 300.00)));//passes
assertTrue(products.contains(new Product("cod-004", "Guitar Bass Fender", 400.00)));//passes
Weil für die entsprechende -Methode die "zwei Hashcodes" gleich

[*] Das HashCode gespeichert am Eimer -Element
[*] Das -Codode des Elements mit dem Originalstaat (bekannt "mit dem Originalstaat (mit dem Original -State (bekannt Anruf) < /li>
< /ul>
Jetzt aus der folgenden Frage < /p>

java.util.hashset.Containt Testing Leads auf ein inkonsistentes Ergebnis < /li> < /> < /ul>
First Sie haben das Objekt in den Satz gestellt, dann hat es verändert, dass es seinen HashCode änderte. In dem Hashset bleibt jedoch das Objekt immer noch im alten Eimer bestehen. Welche Zahl wird aus dem ursprünglichen HashCode abgeleitet. Daher kann es nicht gefunden werden. />

Code: Select all

for(Product product: products) {
//each element is edited +100 to the number
product.setNumber(product.getNumber() + 100.00);
}
Daher fehlschlägt der folgende Satz von AssertRue Methoden (beobachten Sie jedes neue Produkt erstelltes Objekt haben auch die Nummer mit +100)

Code: Select all

assertTrue(products.contains(new Product("cod-001", "Guitar Samick", 200.00))); //fails
assertTrue(products.contains(new Product("cod-002", "Guitar Bass Ibanez", 300.00))) //fails
assertTrue(products.contains(new Product("cod-003", "Guitar Fender", 400.00)));//fails
assertTrue(products.contains(new Product("cod-004", "Guitar Bass Fender", 500.00)));//fails
Weil für die entsprechende Methode "zwei Hashcodes" nicht mehr das gleiche

Der HashCode am Eimer verwendet. HashCode des Elements basiert auf neu [/b] Zustand (mit dem Produkt bekannt.

Code: Select all

for(Product product: products) {
System.out.println(product.toString() + " - " + product.hashCode());
}
Es meldet die neue HashCode jedes Elements, aber jeder Bucket hat das alte Hashcode . /> Jetzt für akademische und Forschung Zwecke, wenn möglich
Frage

Wie kann man von jedem Eimer den HashCode abrufen. List/Arrays von Hashcodes

Einer aus allen Eimer (die Anfrage in dieser Frage)
[*] Andere aus allen Elementen (bereits mit dem product.hashCode () Methode Call)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post