verschachtelte for-Schleife in einen Stream umwandeln?

ac0h1m

Mitglied
Hallo, ich möchte verschachtelte for-Schleifen in einen Stream umwandeln und die Objekte in einer Liste sammeln. Wie ich filtere usw. weiß ich jedoch nicht wie ich verschachtelte for-schleifen in einem Stream umschreibe. Hier mein Code und mein Ansatz in Kommentarzeilen:

Java:
    public static List<PerformanceData> filterByCat(List<PerformanceData> input, String s) {
        
//        var  filterByCatListe = input
//                .stream()
//                .filter(x -> (cat.equals(s)))
//                .collect(Collectors.toList());
        
//        return filterByCatListe;
        
                ArrayList<PerformanceData>  filterByCatListe = new ArrayList<>();
                for (var x: input) {
                    var Liste = new ArrayList<>(Arrays.asList(x.cat().split(",")));
                    for (var cat : Liste) {
                        if (cat.equals(s)) {
                            filterByCatListe.add(x);
                        }
                    }
                } return filterByCatListe;
    }

Das Ziel ist es nur die PerformanceData-Objekte zurückgeben, welche in der
gegebenen Kategorie sind. Aber „cat“ ist eine kommaseparierte Liste an Kategorien, in welcher sich ein Event (/Funktion/etc.) befindet.
 

KonradN

Super-Moderator
Mitarbeiter
Der Ansatz ist auch nicht anders als vorher. Betrachte nur das Innere:
Du hast x.cat() und machst brauchst dann:
  • erst einen Stream
  • dann den Filter
  • dann die Auswertung des Streams (Hier geht es ja dann darum, ob es ein Element gibt oder nicht).

Dann hast Du ein Konstrukt, dass Du z.B. als Filter in dem äußeren Konstrukt verwenden könntest.

Das ist also erneut ein einfacher, gradliniger Ansatz. Wobei jetzt hier der Hinweis von @LimDul sehr wichtig wird: Du hast halt etwas, das einfach unleserlich ist. Und das gehört da auch nicht hin. Die Prüfung, ob ein PerformanceData Element zu einer Kategorie gehört oder nicht, könnte man z.B. in der Klasse PerformanceData implementieren (So man wirklich das so als String mit Komma getrennten Werten lassen will - schon das ist Quatsch. Das Thema hatten wir aber schon in früheren Threads und klar: Das ist vorgegeben und da kannst Du nichts anpassen!

Edit: Die 3 Schritte sind halt das Standard vorgehen. Aber wenn man sich Stream anschaut, dann findet man ggf. etwas, das diese Punkte zusammen fasst.
 

ac0h1m

Mitglied
Der Ansatz ist auch nicht anders als vorher. Betrachte nur das Innere:
Du hast x.cat() und machst brauchst dann:
  • erst einen Stream
  • dann den Filter
  • dann die Auswertung des Streams (Hier geht es ja dann darum, ob es ein Element gibt oder nicht).

Dann hast Du ein Konstrukt, dass Du z.B. als Filter in dem äußeren Konstrukt verwenden könntest.

Das ist also erneut ein einfacher, gradliniger Ansatz. Wobei jetzt hier der Hinweis von @LimDul sehr wichtig wird: Du hast halt etwas, das einfach unleserlich ist. Und das gehört da auch nicht hin. Die Prüfung, ob ein PerformanceData Element zu einer Kategorie gehört oder nicht, könnte man z.B. in der Klasse PerformanceData implementieren (So man wirklich das so als String mit Komma getrennten Werten lassen will - schon das ist Quatsch. Das Thema hatten wir aber schon in früheren Threads und klar: Das ist vorgegeben und da kannst Du nichts anpassen!

Edit: Die 3 Schritte sind halt das Standard vorgehen. Aber wenn man sich Stream anschaut, dann findet man ggf. etwas, das diese Punkte zusammen fasst.
danke für die ausführliche Antwort, jedoch habe ich leider keine Ahnung wie ich das mit dem Filter umsetzt...?
 

KonradN

Super-Moderator
Mitarbeiter
Wir betrachten nur den inneren Teil:
Java:
                    var Liste = new ArrayList<>(Arrays.asList(x.cat().split(",")));
                    for (var cat : Liste) {
                        if (cat.equals(s)) {
                            filterByCatListe.add(x);
                        }
                    }

Und da ist es dann 1:1 - hier ist die Bedingung dieses cat.equals(s) und genau das kannst Du umsetzen!

Die erste Zeile passt Du also so an, dass da ein Stream der Kategorien kommt.
Das if wird zu einem Filter.

Ledglich dieses add ist hier nicht 1:1 umsetzbar. Denn das ist ja aus der äußeren Schleife und die innere Schleife ist nur ein Kriterium, ob ein Element genommen werden soll oder nicht.

Die äußere Schleife wird also zu etwas wie:
Java:
        return input.stream()
                .filter(
                    x -> Das, was Du bei der inneren Schleife machst und wo dann also true oder false raus kommen muss!
                )
                .collect(Collectors.toList());
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
S verschachtelte for-Schleife Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 1
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
Z Datentypen Verschachtelte Generics Allgemeine Java-Themen 1
D Verschachtelte HashMap initializieren Allgemeine Java-Themen 1
G Verschachtelte Generics Allgemeine Java-Themen 2
R n verschachtelte Schleifen? Allgemeine Java-Themen 14
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
T Verschachtelte Schleifen abbrechen Allgemeine Java-Themen 3
G Verschachtelte Treemaps, nach Value sortieren Allgemeine Java-Themen 11
J Verschachtelte ListIteratoren um in zwei Listen hin und herzugehen Allgemeine Java-Themen 5
S Verschachtelte Schleifen Allgemeine Java-Themen 9
O Verschachtelte Iteration: Innere Iteration abbrechen Allgemeine Java-Themen 3
A Parallele Threads oder verschachtelte? Allgemeine Java-Themen 7
M Verschachtelte Schleifen (unbekannte Tiefe) Allgemeine Java-Themen 3
R Verschachtelte Arrays Allgemeine Java-Themen 2
E Probleme beim Zugriff auf verschachtelte Vektoren Allgemeine Java-Themen 16
F verschachtelte Methoden auflösen Allgemeine Java-Themen 2
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
A For-Schleife Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
1 Klassen Variabel aus Schleife übergeben Allgemeine Java-Themen 8
D "Automatisierte", variable verschachtele for-Schleife Allgemeine Java-Themen 9
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
K For-Schleife <> oder != Operator verwenden? Allgemeine Java-Themen 2
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
D While-Schleife - if Zweig unterbrechen Allgemeine Java-Themen 1
F Zweifache For-Schleife Allgemeine Java-Themen 6
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
M While-Schleife schneller, solange die Abbruchbedingung nicht vom Schleifeninneren abhängt Allgemeine Java-Themen 3
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
T for - Schleife Allgemeine Java-Themen 1
J While Schleife ausführen bis Zahl = X Allgemeine Java-Themen 19
R Komplizierte Schleife Allgemeine Java-Themen 1
Q For-Schleife in String-Value Allgemeine Java-Themen 3
F Abstrakte Klasse in "For each" Schleife Allgemeine Java-Themen 1
F for-Schleife auf Kommandoebene ausgeben Allgemeine Java-Themen 9
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
P Erweiterte For Schleife Allgemeine Java-Themen 7
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
Y automatisierte for Schleife Allgemeine Java-Themen 13
B For schleife und weiter? Allgemeine Java-Themen 8
D Probleme bei for-Schleife Allgemeine Java-Themen 4
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
N Frage zur while-Schleife Allgemeine Java-Themen 18
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
M PdfPTable per for-Schleife befüllen Allgemeine Java-Themen 3
F for-Schleife mit : Allgemeine Java-Themen 5
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
W Problem mit Index in einer for-Schleife Allgemeine Java-Themen 8
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
G while Schleife ausführen solange eine Taste gedrückt ist Allgemeine Java-Themen 14
F Foreach und for - Schleife Allgemeine Java-Themen 10
W Berechnung Durchschnitt mit Schleife Allgemeine Java-Themen 9
S for-Schleife, while-Schleife Problem Allgemeine Java-Themen 6
H Netbeans Warning bei Thread.sleep in Schleife Allgemeine Java-Themen 4
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
R while schleife auf 3 durchgänge beschränken Allgemeine Java-Themen 6
V anstatt thread.join() einfach while schleife? Allgemeine Java-Themen 8
x22 for-Schleife Allgemeine Java-Themen 76
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
J Schleife mit : Allgemeine Java-Themen 18
S Klassen in einer Schleife durchlaufen Allgemeine Java-Themen 11
E Schleife wird nicht ausgeführt!!! Allgemeine Java-Themen 8
C Schleife mit leerem Anweisungsblock wird trotz erfüllter Bedingung nicht verlassen Allgemeine Java-Themen 9
S Do-While Schleife bricht nicht ab Allgemeine Java-Themen 3
S Erste Schritte if-Anweisung in for- oder while-schleife umwandeln Allgemeine Java-Themen 3
K CheckBox schleife Allgemeine Java-Themen 2
D Methoden Thread Schleife Status Allgemeine Java-Themen 7
J Verschiedene Klassen als "Object" in ArrayList und dann in for-Schleife erzeugen!? Allgemeine Java-Themen 2
R In einer for Schleife bei einem Substring anfangen, wo man davor aufgehört hat Allgemeine Java-Themen 6
T Rekursion mit While Schleife kombinieren? Allgemeine Java-Themen 4
D Sterne Muster mit einer Schleife Allgemeine Java-Themen 5
Dragonfire Code Konvention for-Schleife / return Allgemeine Java-Themen 15
hdi Detail-Frage zur for-Schleife Allgemeine Java-Themen 9
J Thread pausieren, lange while-Schleife Allgemeine Java-Themen 8
Q Variable aus Schleife/Switch benutzen Allgemeine Java-Themen 7
J Erweiterte For-Schleife mit Vector Allgemeine Java-Themen 5
C Geschachtelte For-Schleife: Äußere Schleife wird nur einmal durchlaufen!? Allgemeine Java-Themen 3
W While-ESC-Schleife funktioniert nicht Allgemeine Java-Themen 3
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
H Threads.... ich will aus der While-Schleife raus Allgemeine Java-Themen 6
calzone Warum wird nicht aus der Schleife gesprungen ? Allgemeine Java-Themen 2
lacyuu Schleife hängt sich auf, wieso?? Allgemeine Java-Themen 2
ModellbahnerTT Problem: Schleife über Textdatei Allgemeine Java-Themen 5
S Wie gross ist die Laufzeit für diese Schleife?? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben