Frage

Wenn ich eine LinkedList von Mitarbeitern Objekten ...

Jeder Mitarbeiter hat einen Namen und ein ID-Felder.

Ich habe VerketteteListe Anrufliste ....

Wenn ich will, um zu sehen, ob die Liste einen Mitarbeiter enthält ich tun:

list.contains(someEmployeeObject)

Wie wäre es, wenn ich will, um zu sehen, ob die in der Liste einen Mitarbeiter enthält, basierend auf dem imployee ID ..

Lassen Sie uns sagen, ich habe die folgende Methode:

public boolean containsEmployeeByID(int id)

Wie kann ich wissen, ob die Liste der Mitarbeiter-Objekt mit dem Parameter-ID enthält?

War es hilfreich?

Lösung

Sie einfach die Liste gehen und suchen nach Übereinstimmungen. Wenn Sie dies oft tun, und die Liste ändern infreqently, den Aufbau eines Map-Index zuerst.

List<Employee> list = ...
for (Employee e : list)
   if (e.getID() == id)
      return true;
return false;

, daß die Mitarbeiter in einem LinkedList Speicher ?? Was für ein seltsames Beispiel Problem ...

Andere Tipps

Vielleicht sollten Sie eine Karte mit der Schlüssel ist, eine ID und Wert ist der Name des Mitarbeiters oder der Mitarbeiter-Objekt verwenden?

Sie können Ihre equals () Methode überschreiben, basierend auf Id zu vergleichen, jedoch in der Regel ist dies nicht eine bewährte Methode.

Eine andere Möglichkeit ist es, eine HashMap zu erstellen und dann können Sie Ihre Mitarbeiter durch ihre Id abrufen.

for (Employee empl : list) {
    map.put(empl.getId(), empl);
}

String idLookup = "1234";

Employee employee = map.get(idLookup);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top