Junior — Middle
Jei iškviesiu toList() metodą ant Stream, ar rezultatas bus ArrayList ar kita kolekcijos rūšis?
sobes.tech AI
Atsakymas iš AI
Stream sąsajoje esantis toList() metodas (nuo Java 16) grąžina nekeičiama sąrašo kopiją, tačiau konkretaus kolekcijos tipo garantijos nėra ir tai nebūtinai bus ArrayList. Skirtingai nei collect(Collectors.toList()), kuris dažniausiai grąžina ArrayList, Stream.toList() gali grąžinti kitokio tipo sąrašą, optimizuotą konkrečiai įgyvendinimui.
Pavyzdys:
List<String> list = Stream.of("a", "b", "c").toList();
// sąrašas nekeičiama, bandymas jį keisti sukels UnsupportedOperationException
Todėl negalima pasikliauti, kad rezultatas bus būtent ArrayList. Jei reikalingas būtent ArrayList, geriau naudoti collect(Collectors.toList()).