Sobes.tech
Junior — Middle

Jeśli wywołam metodę toList() na Stream, czy wynikiem będzie ArrayList, czy inny typ kolekcji?

sobes.tech AI

Odpowiedź od AI

Metoda toList() w interfejsie Stream (począwszy od Java 16) zwraca niezmienną listę, ale konkretny typ kolekcji nie jest gwarantowany i nie musi być ArrayList. W przeciwieństwie do collect(Collectors.toList()), które zazwyczaj zwraca ArrayList, Stream.toList() może zwracać inny typ listy, zoptymalizowany dla konkretnej implementacji.

Przykład:

List<String> list = Stream.of("a", "b", "c").toList();
// lista jest niezmienna, próba jej modyfikacji spowoduje UnsupportedOperationException

W związku z tym nie można polegać na tym, że wynik będzie dokładnie ArrayList. Jeśli potrzebujesz dokładnie ArrayList, lepiej użyć collect(Collectors.toList()).