Sobes.tech
Middle

Τι κάνει η μέθοδος collect στη Java;

sobes.tech AI

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

Η μέθοδος collect στο API Stream της Java πραγματοποιεί μια μεταβλητή μείωση (mutable reduction) των στοιχείων του ρεύματος σε ένα αποτέλεσμα αντικείμενο. Δέχεται έναν Collector ως όρισμα και επιτρέπει την ομαδοποίηση δεδομένων με διάφορους τρόπους, όπως η συλλογή στοιχείων σε συλλογές, η ομαδοποίησή τους ή η εφαρμογή συναρτήσεων συλλογής (άθροισμα, μέσος όρος κ.λπ.).

Βασικά συστατικά του Collector:

  • supplier(): Δημιουργεί ένα νέο, κενό δοχείο αποτελέσματος.
  • accumulator(): Προσθέτει το τρέχον στοιχείο του ρεύματος στο δοχείο αποτελέσματος.
  • combiner(): Συνδυάζει δύο δοχεία αποτελέσματος (χρησιμοποιείται σε παράλληλα ρεύματα).
  • finisher(): Εφαρμόζει μια τελική μετατροπή στο δοχείο αποτελέσματος (προαιρετικό).

Δημοφιλείς υλοποιήσεις του Collector παρέχονται από την κλάση Collectors:

  • toList(), toSet(), toMap(): Συλλέγουν στοιχεία σε List, Set, Map αντίστοιχα.
  • joining(): Συνενώνει στοιχεία συμβολοσειράς.
  • groupingBy(): Ομαδοποιεί στοιχεία βάσει κριτηρίου.
  • counting(), summingInt(), averagingDouble(): Μετράει, αθροίζει, υπολογίζει το μέσο όρο.

Παράδειγμα χρήσης για συλλογή σε λίστα:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CollectExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        List<String> collectedNames = names.stream()
                                          .collect(Collectors.toList()); // Συλλογή σε List

        System.out.println(collectedNames);
    }
}