für was braucht man streams in Java?

freejack75  01.03.2022, 15:42

meinst Du java.io Streams, oder die jüngeren Erweiterungen für funktionale Programmierung?

kdjwio2 
Fragesteller
 01.03.2022, 16:37

Ja io streams

2 Antworten

java.io Streams sind eine Abstraktion für eine Quelle oder Senke von Bytes. Implementiert werden kann das mit Dateien, oder auch mit Anfragen oder Antworten übers Netzwerk, aus einer Datenbank usw.

Das hat den Vorteil, dass z.B. eine gzip-Kompression nur einmal entwickelt werden muss, nämlich für einen Stream, und dann universell für alle Ströme von Bytes verwendet werden kann.

Die Streams API eröffnet einem die Möglichkeit, funktional zu programmieren.

Woher ich das weiß:Hobby – Ich programmiere in meiner Freizeit mit Java.

kdjwio2 
Fragesteller
 01.03.2022, 16:37

Und was genau ist funktionales Programmieren? in Verbindung mit iostreams? ALso eher allgemein sogar, was ist ufnktionales Programmieren?

0
Yoshi32  01.03.2022, 21:00
@kdjwio2
Funktionale Programmierung ist ein  Programmierparadigma, in dem  Funktionen nicht nur definiert und angewendet werden können, sondern auch wie Daten miteinander verknüpft, als Parameter verwendet und als Funktionsergebnisse auftreten können. Dadurch kann ein funktionales Programm sehr weitreichend neue Berechnungsvorschriften zur Laufzeit zusammensetzen und anwenden.

Beispiel in Java wäre

this.songs = Arrays.stream(folder.listFiles())
        .filter(f -> f.getName().endsWith("mp3"))
        .map(Song::new)
        .toArray(Song[]::new);

Anstelle von

List<Song> list = new ArrayList<>();
for (File f : folder.listFiles()) {
    if (f.getName().endsWith("mp3")) {
        Song song = new Song(f);
        list.add(song);
    }
}
this.songs = list.toArray(new Song[0]);
1