Middle
Ποιος είναι ο σκοπός της χρήσης streams στη νέα έκδοση της Java;
sobes.tech AI
Απάντηση από AI
Απλοποίηση της εργασίας με συλλογές δεδομένων.
Κύριοι στόχοι:
- Λειτουργικότητα: Επιτρέπουν τη χρήση εκφράσεων lambda και άλλων λειτουργικών διεπαφών για δηλωτική επεξεργασία δεδομένων.
- Παραλληλισμός: Διευκολύνουν τον παραλληλισμό των λειτουργιών σε συλλογές χωρίς άμεση διαχείριση νημάτων.
- Αμεταβλητότητα: Τα streams δεν τροποποιούν τη αρχική συλλογή. Οι λειτουργίες στα streams δημιουργούν νέα streams ή τελικά αποτελέσματα.
- Απόδοση: Η αργή αξιολόγηση (lazy evaluation) επιτρέπει την εκτέλεση λειτουργιών μόνο όταν είναι απαραίτητο.
- Αναγνωσιμότητα: Ο κώδικας γίνεται πιο συνοπτικός και εκφραστικός σε σύγκριση με τους παραδοσιακούς βρόχους.
Παράδειγμα χρήσης:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange", "grape");
// Φιλτράρισμα και μετατροπή με streams
List<String> filteredFruits = fruits.stream()
.filter(s -> s.startsWith("a")) // Μόνο αυτά που ξεκινούν με "a"
.map(String::toUpperCase) // Μετατροπή σε κεφαλαία
.collect(Collectors.toList()); // Συλλογή σε νέα λίστα
System.out.println(filteredFruits); // Έξοδος: [APPLE]
}
}
Συνοπτικά, τα streams κάνουν τον κώδικα πιο σύγχρονο, αποδοτικό και ευανάγνωστο κατά την εργασία με συλλογές δεδομένων.