Einzelne Objekte und Unterobjekte einer ArrayList ausgeben

ac0h1m

Mitglied
Hallo, ich bin mittlerweile am verzweifeln..
Zu meiner Frage, ich habe eine csv-Datei, welche in eine ArrayList gelesen wird. Nun will ich die ArrayList nach zwei Objekten und die dazugehörigen Datentypen (pid und tid) haben in eine Neue ArrayList speichern. Ich bekomme es einfach nicht hin. Im Bild ist nochmal die Datei aufgezeigt. Ich würde es gerne ohne Stream lösen.
Vielen Danke👋🏻
 

Anhänge

  • Bildschirmfoto 2022-10-23 um 13.41.02.png
    Bildschirmfoto 2022-10-23 um 13.41.02.png
    316,6 KB · Aufrufe: 8
  • Bildschirmfoto 2022-10-23 um 13.37.54.png
    Bildschirmfoto 2022-10-23 um 13.37.54.png
    421,5 KB · Aufrufe: 6
s ist das Element aus der Liste. Also im Autovergleich das Auto, das du prüfen willst.
pid ist im Vergleich die Farbe, die ich gesagt habe.
-1 ist das egal.

Also: Prüfung, ob ich egal gesagt habe wäre übertragen: pid == -1

==> pid == -1 || pid == s.pid()

(Es ist egal, ob Du a == b oder b == a schreibst.)

Das Gleiche dann noch für tid - das wäre dann z-B. die Automarke. Da kann ich also "bmw" sagen aber auch "egal".

Wenn Du die Prüfung für tid hast, dann kannst Du Dir überlegen, wie Du die verknüpfen willst. Kannst Du Dir ja überlegen, was ich haben will, wenn ich "rot" "bmw" verlange: Sind es Autos die rot und von BMW sind oder sind das Autos die entweder rot sind oder ein bmw? 🙂
 
Dann würdest Du auf der Auto Liste prüfen:
Stehst bei der Farbe des Autos (von der Liste) "egal" oder steht da die Farbe, die ich gesagt habe.

Aber das ist ja nicht das, was Du willst. Du willst ja prüfen:
Habe ich "egal" gesagt oder steht beim Auto (von der Liste) die Farbe, die ich gesagt habe.
Dann würdest Du auf der Auto Liste prüfen:
Stehst bei der Farbe des Autos (von der Liste) "egal" oder steht da die Farbe, die ich gesagt habe.

Aber das ist ja nicht das, was Du willst. Du willst ja prüfen:
Habe ich "egal" gesagt oder steht beim Auto (von der Liste) die Farbe, die ich gesagt habe.
pid == -1 || s.pid() == pid

ist es so richtig?
 
s ist das Element aus der Liste. Also im Autovergleich das Auto, das du prüfen willst.
pid ist im Vergleich die Farbe, die ich gesagt habe.
-1 ist das egal.

Also: Prüfung, ob ich egal gesagt habe wäre übertragen: pid == -1

==> pid == -1 || pid == s.pid()

(Es ist egal, ob Du a == b oder b == a schreibst.)

Das Gleiche dann noch für tid - das wäre dann z-B. die Automarke. Da kann ich also "bmw" sagen aber auch "egal".

Wenn Du die Prüfung für tid hast, dann kannst Du Dir überlegen, wie Du die verknüpfen willst. Kannst Du Dir ja überlegen, was ich haben will, wenn ich "rot" "bmw" verlange: Sind es Autos die rot und von BMW sind oder sind das Autos die entweder rot sind oder ein bmw? 🙂
Java:
public static ArrayList<PerformanceData> filterByIDs(ArrayList<PerformanceData> input, int pid, int tid) {
        ArrayList<PerformanceData> filterListe = new ArrayList <PerformanceData>();

        for(PerformanceData s : input) {
            if((pid == -1 || s.pid() == pid) &&
                    (tid == -1 || s.tid() == tid)) {
  
                filterListe.add(s);     
 
                for(PerformanceData s1 : filterListe) {
                    System.out.println(s1);
                }
            }
        }
        return filterListe;
    }


Es hat funktioniert, Vielen Dank für die Hilfe. War sehr sehr ausführlich, Vielen Dank.
 
-1 == s.pid() || pid == s.pid()

ich bin grad sehr verwirrt...😅
Lies deine Bedingung mal laut vor, dann erkennst du, warum sie falsch ist.
"Die Bedingung ist true, wenn s.pid() gleich -1 ist oder s.pid() gleich dem gewünschten PID Wert ist"
Also .... Warum vergleichst du s.pid() mit -1 wenn es doch um den Abfragewert geht?

Um es mit dem Autobeispiel auszudrücken: Kann denn ein Auto die Farbe "Egal" haben?
 

Zurück
Oben