Sobes.tech
Junior — Middle

Ak zavolám metódu toList() na Stream, bude výsledkom ArrayList alebo iný typ kolekcie?

sobes.tech AI

Odpoveď od AI

Metóda toList() v rozhraní Stream (od Java 16) vracia nezmeniteľný zoznam, ale konkrétny typ kolekcie nie je garantovaný a nemusí byť ArrayList. Na rozdiel od collect(Collectors.toList()), ktoré zvyčajne vracia ArrayList, Stream.toList() môže vrátiť iný typ zoznamu, optimalizovaný pre konkrétnu implementáciu.

Príklad:

List<String> list = Stream.of("a", "b", "c").toList();
// zoznam je nezmeniteľný, pokus o jeho zmenu spôsobí UnsupportedOperationException

Preto sa nedá spoľahnúť na to, že výsledok bude presne ArrayList. Ak je potrebný presne ArrayList, je lepšie použiť collect(Collectors.toList()).