Hallo Leute,
ich habe eine Frage an euch. Vielleicht steh ich nur auf dem Schlauch und ihr könnt mir schnell helfen, aber immer wenn ich einen neuen Datensatz in meiner HashMap speichere, wird jeder value mit dem neuesten ersetzt. hier mal mein Aufbau: Ich habe eine Klasse "User", die einfach nur ein paar Felder mit gettern und settern hat.
Dazu habe ich eine weitere Klasse, die eine HashMap mit dem User Objekt abfüllen soll:
Soweit der Aufbau. Jetzt will ich in meiner TestKlasse das Befüllen eben jener Map testen. Das Problem ist, dass immer der Value der Map mit dem letzten Datensatz überschrieben wird und ich nicht verstehe warum das so ist. hier die Testklasse:
Nach dem letzten Aufruf von create sieht meine Map also so aus: Key=1 / Value=(id=1, name=Kuntz, email=kuntz@mail.com). Oder anders gesagt. alle Values haben diesen Inhalt, obwohl die keys ja unterschiedlich sind. Könnt ihr mir da helfen? Was genau ist da mein Problem, was übersehe ich?
Danke schon mal.
ich habe eine Frage an euch. Vielleicht steh ich nur auf dem Schlauch und ihr könnt mir schnell helfen, aber immer wenn ich einen neuen Datensatz in meiner HashMap speichere, wird jeder value mit dem neuesten ersetzt. hier mal mein Aufbau: Ich habe eine Klasse "User", die einfach nur ein paar Felder mit gettern und settern hat.
Java:
public class User {
private int id;
private String name;
private String email;
public int getId() {
return id;
}
// weitere getter und setter
}
Dazu habe ich eine weitere Klasse, die eine HashMap mit dem User Objekt abfüllen soll:
Java:
public class UserDaoImpl implements UserDao {
private Map<Integer, User> myMap = new HashMap<>();
@Override
public void create(User user) {
myMap.put(user.getId(), user);
}
@Override
public User read(int id) {
return myMap.get(id);
}
}
Soweit der Aufbau. Jetzt will ich in meiner TestKlasse das Befüllen eben jener Map testen. Das Problem ist, dass immer der Value der Map mit dem letzten Datensatz überschrieben wird und ich nicht verstehe warum das so ist. hier die Testklasse:
Java:
public class UserDaoImplTest {
@Test
public void createShouldCreateAUser() {
UserDao dao = new UserDaoImpl();
User user = new User();
user.setId(1);
user.setName("Hans");
user.setEmail("hans@mail.com");
dao.create(user);
user.setId(2);
user.setName("Hintz");
user.setEmail("hintz@mail.com");
dao.create(user);
user.setId(3);
user.setName("Kuntz");
user.setEmail("kuntz@mail.com");
dao.create(user);
User result = dao.read(1);
assertNotNull(result);
assertEquals("Hans", result.getName());
assertEquals("hans@mail.com", result.getEmail());
}
}
Nach dem letzten Aufruf von create sieht meine Map also so aus: Key=1 / Value=(id=1, name=Kuntz, email=kuntz@mail.com). Oder anders gesagt. alle Values haben diesen Inhalt, obwohl die keys ja unterschiedlich sind. Könnt ihr mir da helfen? Was genau ist da mein Problem, was übersehe ich?
Danke schon mal.