Ο όρος Java Streams (Stream API) αναφέρεται σε μια αφαιρετική προγραμματιστική δομή που εισήχθη στη Java 8 για την επεξεργασία ακολουθιών από δεδομένα. Πρόκειται για ένα αγωγό (pipeline) υπολογιστικών λειτουργιών που εφαρμόζεται πάνω σε μια πηγή δεδομένων (όπως μια λίστα ή ένας πίνακας). Ο αγωγός αυτός επιτρέπει τον μετασχηματισμό και το φιλτράρισμα των στοιχείων χωρίς να τροποποιεί την αρχική πηγή. Ένα Java Stream δεν έχει καμία σχέση με τις ροές δεδομένων (Ι/Ο Streams) ή με δομές δεδομένων (java.util.Collection ή java.util.Map).
Δύο βασικά χαρακτηριστικά των Streams είναι τα εξής:
Κάθε Stream ακολουθεί την εξής ροή:
myList.stream())Περιγράφονται από το interface java.util.stream.Stream το οποίο περιγράφει την παραπάνω ροή.
Το Stream API είναι εξαιρετικά ευέλικτο. Μπορεί να δημιουργηθεί ένα Stream από σχεδόν οποιαδήποτε πηγή δεδομένων. Κυριότερες πηγές είναι οι παρακάτω:
myList.stream()): Δημιουργεί ένα stream με αντικείμενα τύπου T από τα περιεχόμενα της λίστας.mySet.stream()): Δημιουργεί ένα stream με αντικείμενα τύπου T από τα περιεχόμενα του set.Arrays.stream(myArray) δημιουργεί ένα stream από αντικείμενα ή βασικούς τύπους (int, long, double) που περιέχονται στον πινακα myArray.lines, μετατρέπει κάθε γραμμή ενός αρχείου σε στοιχείο του stream.