Junior — Middle
Αν καλέσω τη μέθοδο toList() σε ένα Stream, το αποτέλεσμα θα είναι ArrayList ή κάποιο άλλο τύπο συλλογής;
sobes.tech AI
Απάντηση από AI
Η μέθοδος toList() στο interface Stream (από το Java 16 και μετά) επιστρέφει μια αμετάβλητη λίστα, αλλά ο συγκεκριμένος τύπος συλλογής δεν εγγυάται και δεν είναι απαραίτητα ArrayList. Σε αντίθεση με το collect(Collectors.toList()), που συνήθως επιστρέφει ArrayList, το Stream.toList() μπορεί να επιστρέψει έναν άλλο τύπο λίστας, βελτιστοποιημένο για την συγκεκριμένη υλοποίηση.
Παράδειγμα:
List<String> list = Stream.of("a", "b", "c").toList();
// η λίστα είναι αμετάβλητη, η προσπάθεια τροποποίησής της θα προκαλέσει UnsupportedOperationException
Επομένως, δεν μπορείς να βασίζεσαι στο ότι το αποτέλεσμα θα είναι ακριβώς ArrayList. Αν χρειάζεται συγκεκριμένα ArrayList, είναι καλύτερο να χρησιμοποιήσεις collect(Collectors.toList()).