Junior — Middle
Μπορείτε να εξηγήσετε τι είναι η μέθοδος flatMap και πώς διαφέρει από το map;
sobes.tech AI
Απάντηση από AI
Η μέθοδος map εφαρμόζεται σε μια συλλογή και μετατρέπει κάθε στοιχείο, επιστρέφοντας μια νέα συλλογή με στοιχεία που αντιστοιχούν στα αποτελέσματα της συνάρτησης.
Το flatMap εφαρμόζει πρώτα μια συνάρτηση που επιστρέφει μια συλλογή (ή ροή) για κάθε στοιχείο, και στη συνέχεια "εξομαλύνει" (flatten) όλες αυτές τις συλλογές σε μια ενιαία ροή ή λίστα.
Παράδειγμα σε Java με ροές:
List<List<String>> list = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d")
);
// το map θα επιστρέψει Stream<List<String>>
Stream<List<String>> mapped = list.stream()
.map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));
// το flatMap θα επιστρέψει Stream<String>
Stream<String> flatMapped = list.stream()
.flatMap(innerList -> innerList.stream().map(String::toUpperCase));
// το flatMapped μπορεί να συλλεχθεί σε μια λίστα
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]
Έτσι, το flatMap είναι χρήσιμο όταν η συνάρτηση επιστρέφει εμφωλευμένες συλλογές και χρειάζεται μια επίπεδη δομή.