Il faut également utiliser les mêmes clefs lors des mappings et des tests.
HashMap<String, Personne> listePersonne = new HashMap<String, Personne>();
veut dire qu'on créé une map avec pour clé une instance de String et pour valeur associée, une instance de Personne
Donc pour tester si une clé, une instance de String donc, est dans la map, on utilise containsKey :
1 2 3 4
| String s = ...
if ( listePersonne.containsKey(s) ) {
...
} |
Pour tester si une instance de Personne est dans la map, on utilise containsValue
1 2 3
| Personne personne = ...
if ( listePersonne.containsValue(personne) ) {
} |
Ensuite, tu créés tes mappings comme ça :
listePersonne.put(personne1.getLogin() + personne1.getPassword(), personne1);
listePersonne.containsKey( user + "¤" + pass )
te retournera forcément false, sauf si par hasard, il y un "¤" dans un nom de user ou un mot de passe, et que par concaténation, on tombe par hasard sur un autre user + pass qui lui serait égal.
Si tu utilises
listePersonne.containsKey( user + "¤" + pass )
, il faudra que tu mappes tes users par
listePersonne.put(personne1.getLogin() + "¤" + personne1.getPassword(), personne1);
, et il vaut mieux que tu t'arranges pour qu'il n'y ait jamais de "¤" dans un nom ou un mot de passe.
Mais, il est vrai qu'indexer uniquement sur le login est bien plus simple (surtout qu'en général on s'arrange plutôt pour que le login soit unique).
Partager