Java-Suchelement in ArrayList von Klassen mit einem Iterator [Duplikat]

Oct 15 2020

Ich kann kein Tutorial dazu finden, jedes Tutorial scheint eine ArrayList von Strings zu verwenden.

Angenommen, Sie haben eine Klasse Person, die viele Attribute einschließlich Name hat.

class person
{
    public String name;
    public int age;
    public int weight;
    public String hair_colour;
    public String eye_colour;
 };

Sie haben eine ArrayList von Personen und möchten eine Person in dieser ArrayList finden, und Sie haben nur deren Namen.

ArrayList<person> people = new ArrayList<person>();

Wie finde ich "Fred"?

Ich weiß, dass es möglich ist, alle Elemente in der Liste zu durchlaufen, aber ich möchte dies mit einem Iterator richtig machen.

Kennt jemand ein Tutorial, in dem erklärt wird, wie mit einem Iterator eine Suche in einer ArrayList durchgeführt wird, um ein Element mit nur einem Attribut dieses Elements zu finden?

Oder ist das einfach nicht möglich? Habe ich Iteratoren missverstanden?

Antworten

1 RohanKumar Oct 15 2020 at 10:07

Wie in den Kommentaren erwähnt, ist der Iterator-Ansatz dem, was Sie mit Standardschleifen machen, sehr ähnlich:

public static Person findPersonByName(List<Person> list, String name) {
    Iterator<Person> it = list.iterator();
    while (it.hasNext()) {
      Person p = it.next();
      if (p.getName().equals(name)) { // Person found, return object
        return p;
      }
    }
    return null; // Not found return NULL
}

Wenn Sie Java 8 und höher verwenden, können Sie möglicherweise Streams () ausprobieren. Diese machen dies sehr kompakt:

public static Person findPersonByName(List<Person> list, String name) {
  return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}