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.