Sobes.tech
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 κάνουν τον κώδικα πιο σύγχρονο, αποδοτικό και ευανάγνωστο κατά την εργασία με συλλογές δεδομένων.