Mehrdimensionales Array mit flatMap() ausgeben lassen

nightsky_

Mitglied
Hallo,
Ich hoffe mein Anliegen ist hier im richtigen Bereich gelandet, falls nicht, dann bitte ich um Verschiebung des Threads^^

In der Uni behandeln wir gerade Streams und die dazugehörigen Funktionen, aktuell haben wir eine Aufgabe bekommen in der es speziell um flatMap() geht.
Jetzt sitze ich gerade an einer Aufgabe mit der ich gerade gar nicht klar komme:

Aufgabe: Mehrdimensionales-Array Integer
Überführen Sie das nachfolgende, mehrdimensione, Array mit flatMap() in einen eindimensionalen Stream und geben Sie die Werte auf der Standardausgabe aus.

Integer[][] numbers = {new Integer[]{1, 2, 3, 4, 5}, new Integer[]{6, 7, 8, 9, 10}};

Zuvor habe ich die Vorgänger Aufgabe wie folgt gelöst:
Code:
Windows PowerShell
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

PS C:\Users\xxy> jshell
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> Arrays.asList(Arrays.asList(1, 2, 3, 4, 5), Arrays.asList(6, 7, 8, 9, 10));
$1 ==> [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]

jshell> $1.stream().flatMap(List::stream).forEach(System.out::println)
1
2
3
4
5
6
7
8
9
10

jshell>


Ich hoffe ich finde hier jemanden der mir damit helfen kann!
Vielen Dank!
 

DrZoidberg

Top Contributor
Du hast hier Arrays anstelle von Listen. Die Lösung bleibt aber fast die gleiche. Statt List::stream verwendest du Arrays::stream und statt $1.stream() Arrays.stream($1).
 

nightsky_

Mitglied
Du hast hier Arrays anstelle von Listen. Die Lösung bleibt aber fast die gleiche. Statt List::stream verwendest du Arrays::stream und statt $1.stream() Arrays.stream($1).
Tatsache, hat auf Anhieb geklappt! Ich danke dir vielmals, saß gestern die halbe Nacht dran und bin als nicht drauf gekommen weil ich immer "numbers.stream(). ..." geschrieben habe anstelle von "Array.stream(numbers). ..."
Java:
jshell>  Integer[][] numbers = {new Integer[]{1, 2, 3, 4, 5}, new Integer[]{6, 7, 8, 9, 10}};
numbers ==> Integer[2][] { Integer[5] { 1, 2, 3, 4, 5 }, Integer[5] { 6, 7, 8, 9, 10 } }

jshell> Arrays.stream(numbers).flatMap(Arrays::stream).forEach(System.out::println)
1
2
3
4
5
6
7
8
9
10

@DrZoidberg kannst du mir auch erklären warum ich bei dem Beispiel davor den Namen der Liste benutze um den Stream zu schreiben, also "$1.stream()"
und bei dem zweiten aber "Array.stream($1)" schreiben müsste?

Und vielen Dank noch mal für die Hilfe! :)
 

DrZoidberg

Top Contributor
Weil die List Klasse eine stream() Methode besitzt, Arrays aber nicht. Du hättest im ersten Beispiel übrigens auch genauso gut List.stream($1) schreiben können.
 

nightsky_

Mitglied
Ahh, das macht Sinn,
da bin ich aber gar nicht drauf gekommen, hätte man ja sonst direkt in der API nachsehen können..


Jetzt hätte ich aber gleich noch eine Frage, wobei das wohl eher nichts mit Streams zu tun hat als eher mit Generics.
Und zwar wird in einer anderen Aufgabe wieder das gleiche verlangt wie im oberen Post, allerdings geht es jetzt nicht um ein Integer[][] sondern ein int[][].
Ich weiß, dass das Integer Array ein Objekten ist während das normale intArray halt nur ein normales Array ist, ich verstehe aber nicht warum ich nicht wieder mit dem gleichen Ansatz bzw Code wieder einfach den Inhalt ausgeben lassen kann.

Als Fehler bekomme ich:
Java:
 Error:
|  incompatible types: inference variable T has incompatible bounds
|      equality constraints: int
|      upper bounds: java.lang.Object
|  Arrays.stream(intNumbers).flatMap(Arrays::stream).forEach(System.out::println)
|  ^-------------------------------------------------------^

Muss/Kann ich das int[] in ein Integer[] wrappen? Würde das überhaupt Sinn machen^^
 

DrZoidberg

Top Contributor
Arrays.stream(intNumbers) erzeugt ein Stream Objekt und kein IntStream Objekt. Das liegt daran, dass ein zweidimensionales Array tatsächlich ein eindimensionales Array ist, das wiederum Arrays als Elemente besitzt. Deshalb wird diese Methode aufgerufen und nicht diese. Die flatMap Methode von Stream verlangt aber, dass die ihr übergebene Methodenreferenz (also Arrays::stream) einen Stream zurückliefert. Das tut sie aber nicht. Sie liefert einen IntStream, da es sich in dem Fall um diese Methode handelt.
Um das ganze zu beheben kannst du einfach flatMap austauschen gegen flatMapToInt.
um solche Fehler leichter zu finden, würde ich dir empfehlen, deine relativ lange Zeile in mehrere kurze Anweisungen zu zerlegen, die du nacheinander ausführst.
 

nightsky_

Mitglied
Danke für die ausführliche Erklärung und die Verlinkungen, ich glaube jetzt habe ich einen besseren Überblick!
Mir war der Unterschieden zwischen dem Stream Objekt und den (untergestellten? erbenden?) anderen Stream Objekten, wie IntStream, vorher nicht ganz klar gewesen.

um solche Fehler leichter zu finden, würde ich dir empfehlen, deine relativ lange Zeile in mehrere kurze Anweisungen zu zerlegen, die du nacheinander ausführst.
Das sollte ich mir angewöhnen ja, in meinem Buch wird es auch untereinander geschrieben!^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
OZAN86 Mehrdimensionales Array Java Basics - Anfänger-Themen 4
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
N Alternative für mehrdimensionales Array Java Basics - Anfänger-Themen 25
K Mehrdimensionales Array Java Basics - Anfänger-Themen 4
Y Mehrdimensionales Array diagonal abfragen. Java Basics - Anfänger-Themen 5
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
F Mehrdimensionales Array durchsuchen Java Basics - Anfänger-Themen 8
S Mehrdimensionales Array füllen Java Basics - Anfänger-Themen 1
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
S Mehrdimensionales Array sortieren Java Basics - Anfänger-Themen 3
H Mehrdimensionales Array - Inhalt auf Null überprüfen Java Basics - Anfänger-Themen 5
J mehrdimensionales array Java Basics - Anfänger-Themen 2
M Mehrdimensionales Array initialisieren Java Basics - Anfänger-Themen 3
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
F.S.WhiTeY Mehrdimensionales array, größere zahlen von innen nach außen Java Basics - Anfänger-Themen 3
S Mehrdimensionales Char-Array initialisieren Java Basics - Anfänger-Themen 17
Joy drei- und mehrdimensionales Array deklarieren Java Basics - Anfänger-Themen 9
D Datentypen mehrdimensionales Array meherer Typen möglich ? Java Basics - Anfänger-Themen 6
E Mehrdimensionales Array automatisch befüllen Java Basics - Anfänger-Themen 9
Z mehrdimensionales Array, Matrix "invertieren" Java Basics - Anfänger-Themen 4
B Mehrdimensionales Array + Tiefe Java Basics - Anfänger-Themen 4
F Mehrdimensionales Array zweite Diemnsion später Konstruieren? Wie Java Basics - Anfänger-Themen 2
B Mehrdimensionales Array Java Basics - Anfänger-Themen 9
bigbasti Mehrdimensionales Array instanzieren Java Basics - Anfänger-Themen 10
K Größe, mehrdimensionales Array Java Basics - Anfänger-Themen 6
S Mehrdimensionales Array füllen und kopieren! Java Basics - Anfänger-Themen 14
D Mehrdimensionales Array Java Basics - Anfänger-Themen 6
D String in mehrdimensionales Array Java Basics - Anfänger-Themen 7
D Mehrdimensionales Array sortieren Java Basics - Anfänger-Themen 5
S Mehrdimensionales Array+Methode+Rückgabeschwierigkeiten Java Basics - Anfänger-Themen 8
J Mehrdimensionales Array im Http-Request Java Basics - Anfänger-Themen 5
I dynamische mehrdimensionales Array Java Basics - Anfänger-Themen 8
G Rückgabe mehrdimensionales Array Java Basics - Anfänger-Themen 3
L zahlen in mehrdimensionales array einlesen Java Basics - Anfänger-Themen 3
C mehrdimensionales Object sortieren Java Basics - Anfänger-Themen 4
A Datentypen Größe eines mehrdimensionales Arrays Java Basics - Anfänger-Themen 4
C Problem: Mehrdimensionales Arry Java Basics - Anfänger-Themen 10
A mehrdimensionales ArrayList Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben