Sobes.tech
Junior — Middle

Ha meghívom a toList() metódust egy Stream-on, az ArrayList lesz vagy más típusú gyűjtemény?

sobes.tech MI

Válasz az MI-től

A Stream felületén található toList() metódus (Java 16-tól kezdődően) egy változtathatatlan listát ad vissza, de a kollekció konkrét típusa nem garantált, és nem feltétlenül ArrayList. A collect(Collectors.toList()) általában ArrayList-et ad vissza, míg a Stream.toList() más típusú listát is visszaadhat, amelyet az adott implementáció optimalizált.

Példa:

List<String> list = Stream.of("a", "b", "c").toList();
// a lista változtathatatlan, módosítási kísérlet UnsupportedOperationException-t eredményez

Ezért nem szabad megbízni abban, hogy az eredmény pontosan ArrayList. Ha kifejezetten ArrayList-re van szükség, akkor jobb a collect(Collectors.toList()) használata.