Ik heb een eigen classe gemaakt Users.
Het enige wat deze class heeft zijn wat setters en getters en een toString() functie en een equals() functie. Nou wil ik deze class graag gebruiken in een HashSet. Zodat deze kan bebalen welke users dubbel zijn etc. Alles goed en aardig maar het lijkt erop dat HashSet niet mijn equals() gebruikt om twee User classes te vergelijken. Zie de volgende code:
Ik verwacht dus dat er maar 1 User object in de HashSet komt te staan maar de uitvoer is als volgt:
Object user1 en user1 vind hij wel het zelfde maar user1 en user2 zijn niet het zelfde. Terwijl zoals je in de uitvoer kan zien user1.equals(user2) wel TRUE geeft.
Wat kan ik hier nou aan doen!?!? Trouwens met String objecten werkt het wel naar behoren!
Zie hier nog de equals methode in User:
Het enige wat deze class heeft zijn wat setters en getters en een toString() functie en een equals() functie. Nou wil ik deze class graag gebruiken in een HashSet. Zodat deze kan bebalen welke users dubbel zijn etc. Alles goed en aardig maar het lijkt erop dat HashSet niet mijn equals() gebruikt om twee User classes te vergelijken. Zie de volgende code:
Java:
1
2
3
4
5
6
7
| User user1 = new User("rik", "Geen Naam", "101010101", true); User user2 = new User("rik", "Geen Naam", "101010101", true); log.debug( ""+user1.equals(user2) ); usersDB.add(user1); usersDB.add(user1); usersDB.add(user2); log.debug(usersDB); |
Ik verwacht dus dat er maar 1 User object in de HashSet komt te staan maar de uitvoer is als volgt:
code:
1
2
| DEBUG - true DEBUG - [Geen Naam (rik) , 101010101 , true, Geen Naam (rik) , 101010101 , true] |
Object user1 en user1 vind hij wel het zelfde maar user1 en user2 zijn niet het zelfde. Terwijl zoals je in de uitvoer kan zien user1.equals(user2) wel TRUE geeft.
Wat kan ik hier nou aan doen!?!? Trouwens met String objecten werkt het wel naar behoren!
Zie hier nog de equals methode in User:
Java:
1
2
3
4
5
6
7
8
| public boolean equals( Object obj ) { if(this==obj) return true; // Username is primary key. User u = (User) obj; return( this.userName.equals(u.getUserName()) ); } |