Sobes.tech
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()).