Trovare l'elemento nell'elenco collegato
-
03-07-2019 - |
Domanda
Se possiedo un LinkedList di oggetti Employee ...
Ogni dipendente ha un campo Nome e ID.
Ho un elenco di chiamate di LinkedList ....
Se voglio vedere se l'elenco contiene un dipendente, lo faccio:
list.contains(someEmployeeObject)
Che ne dici se voglio vedere se l'elenco contiene un dipendente basato sull'ID dell'impiegato ..
diciamo che ho il seguente metodo:
public boolean containsEmployeeByID(int id)
Come posso sapere se l'elenco contiene l'oggetto impiegato con l'id parametro?
Soluzione
Basta scorrere l'elenco e cercare le corrispondenze. Se lo fai spesso e cambi di rado l'elenco, crea prima un indice della mappa.
List<Employee> list = ...
for (Employee e : list)
if (e.getID() == id)
return true;
return false;
Detto questo, salvare i dipendenti in una LinkedList ?? Che strano problema di esempio ...
Altri suggerimenti
Forse dovresti usare una mappa con la chiave come ID e valore come nome dell'impiegato o oggetto dell'impiegato?
Potresti sovrascrivere il tuo metodo equals () per confrontare in base a Id, tuttavia questa in genere non è una buona pratica.
Un'altra opzione è quella di creare una HashMap e quindi è possibile recuperare i dipendenti in base al loro ID.
for (Employee empl : list) {
map.put(empl.getId(), empl);
}
String idLookup = "1234";
Employee employee = map.get(idLookup);