ArrayListen Problem

hab nochmal ein problem mit einer ArrayListe.

Wie kann ich ein bestimmtest Objekt aus einer ArrayListe auslesen?

eine ArrayListe die Menschen speichert… möchte ich z.b. das Objekt “dieter” auslesen


public void readOutSingleObject(Human human){
     for (int i= 0; i < this.humanList.size(); i++){
// ???
     }
}


wie könnte man das in der Methode machen?

Das geht nur, wenn Human eine Methode zum Auslesen des Namens bereit stellt.
Zeige mal die Klasse Human. Dann kann man das genau sagen.

kann ich das Objekt als solches nur über eien String namen auslesen?


public class Human{
private String name;
private int alter;
}


Du brauchst schon, um ein Objekt eindeutig zu identifizieren, einen Schlüssel.
In Datenbanken bspw. ist das meist ein Index.
In diesem einfachen Fall geht das noch über einen String wie den Namen. Aber du bekommst schon ein Problem, wenn mehrere Menschen den gleichen Namen haben.

Ich schreibe dir mal ein paar einfache Beispiel-Fragmente:

//und in einer Liste speichern
Human dieter = new Human("Dieter");
...
list.add(dieter);```

```//nach dem Namen Dieter suchen und den Menschen, der auf den Namen hört zurückgeben
String name = "Dieter";
Human dieter = list.readOutSingleObject(name);```

```//nach einem Menschen suchen, dessen Name übergeben wurde
public Human readOutSingleObject(String name){
     for(int i = 0, j = humanList.size(); i < j; i++) {
           Human h = (Human)humanList.get(i)
           if(h.getName().equals(name)) {
                 return human;
           }
     }
     return null; //nichts gefunden
}```

Dazu muss dann deine Klasse Human mindestens so aussehen:
```public class Human {
   private String name;

   public Human(String name) {
      setName(name);
   }

   public void setName(String name) {
      this.name = name;
   }

   public String getName() {
      return name;
   }

}```

Warum sind eigentlich viele Beiträge (auch der mit JUnit-Tests) als “erledigt” markiert, obwohl der Threadsteller das noch gar nicht so verkündet hat?

Habe ich mich auch gewundert. Das passiert offenbar, nachdem jemand geantwortet hat, ich musste jedesmal den Status auf „offen“ zurücksetzen. :confused: