Hallo Zusammen
Ich habe Probleme mit HashMap's und der hashCode()-Funktion in Java.
Ich habe folgenden Code:
Code:
import java.util.HashMap;
import java.util.Map;
public class Test
{
public static void main(String[] args)
{
Map<AddressTest, String> addressToSwitch = new HashMap<AddressTest, String>();
AddressTest a1 = new AddressTest(1,0);
AddressTest a2 = new AddressTest(1,
0);
addressToSwitch.put(a1,
"Hallo");
System.out.println(a1.hashCode() == a2.hashCode()); // ergibt true
System.out.println(addressToSwitch.containsKey(a2)); // ergibt FALSE !!!!
}
public static class AddressTest
{
private int address1;
private int address2;
private int bus;
public AddressTest(int address1,
int address2)
{
this.address1 = address1;
this.address2 = address2;
}
public int hashCode()
{
return Integer.valueOf(address1)
.hashCode() + Integer.valueOf(address2)
.hashCode();
}
public boolean equals(Address address)
{
if (address.getAddress1() == address1) {
return true;
} else if (address.getAddress1() == address1 && address.getAddress2() == address2) {
return true;
}
return false;
}
}
}
Aus welchem Grund gibt mir das 2. println() false zurueck ? Habe ich irgendetwas uebersehen ?
vielen Dank fuer eure Hilfe
Ben
Lesezeichen