Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι σημαίνει ο όρος 'μη τερματική λειτουργία' κατά την εργασία με ροές δεδομένων στο API Stream;

sobes.tech AI

Απάντηση από AI

Στην API Stream της Java, οι λειτουργίες διαιρούνται σε τερματικές και μη τερματικές (ενδιάμεσες).

Μια μη τερματική λειτουργία είναι μια λειτουργία που επιστρέφει ένα νέο ρεύμα (Stream) και δεν ξεκινά την επεξεργασία δεδομένων αμέσως. Χρησιμοποιείται για την κατασκευή μιας αλυσίδας μετασχηματισμών, π.χ., φιλτράρισμα, χαρτογράφηση, ταξινόμηση.

Παραδείγματα μη τερματικών λειτουργιών:

  • filter()
  • map()
  • sorted()
  • distinct()

Αυτές οι λειτουργίες είναι τεμπέλικες: δεν εκτελούνται μέχρι να κληθεί μια τερματική λειτουργία, π.χ., forEach(), collect(), count().

Παράδειγμα:

List<String> list = Arrays.asList("a", "bb", "ccc");

list.stream()
    .filter(s -> s.length() > 1) // μη τερματική
    .map(String::toUpperCase)    // μη τερματική
    .forEach(System.out::println); // τερματική

Έτσι, οι μη τερματικές λειτουργίες επιτρέπουν την κατασκευή μιας αλυσίδας μετασχηματισμών, ενώ η τερματική ξεκινά την εκτέλεση.