Trouver un élément dans la liste chaînée
-
03-07-2019 - |
Question
Si j'ai une liste d'objets d'Objet Linkedliste ...
Chaque employé possède un champ Nom et un identifiant.
J'ai une liste d'appels liés ....
Si je veux voir si la liste contient un employé, je le fais:
list.contains(someEmployeeObject)
Que diriez-vous si je veux voir si la liste contient un employé basé sur l'ID imployee?
Disons que j'ai la méthode suivante:
public boolean containsEmployeeByID(int id)
Comment savoir si la liste contient l'objet employé avec l'identificateur de paramètre?
La solution
Il suffit de parcourir la liste et de rechercher des correspondances. Si vous le faites souvent et que vous modifiez la liste peu souvent, commencez par créer un index Map.
List<Employee> list = ...
for (Employee e : list)
if (e.getID() == id)
return true;
return false;
Cela dit, sauver les employés dans une LinkedList? Quel étrange exemple de problème ...
Autres conseils
Peut-être devriez-vous utiliser une carte avec la clé étant un identifiant et la valeur étant le nom de l'employé ou l'objet employé?
Vous pouvez redéfinir votre méthode equals () pour la comparer en fonction de son identifiant, mais il ne s'agit généralement pas d'une bonne pratique.
Une autre option consiste à créer une carte de hachage et à récupérer vos employés par leur identifiant.
for (Employee empl : list) {
map.put(empl.getId(), empl);
}
String idLookup = "1234";
Employee employee = map.get(idLookup);