import static java.util.stream.Collectors.toList;*; ... List<String> strings = Stream.of("foo", "bar", "baz").toList(); // Java 16, immutable List<String> strings = Stream.of("foo", "bar", "baz").collect(toUnmodifiableList()); // Java 10, immutable List<String> strings = Stream.of("foo", "bar", "baz").collect(toList()); // Java 8, an ArrayList in practice But don't expect these lists to be mutable: Collectors.toList() is documented to have doesn't guarantee"no guarantees on the type, mutability, serializability, or thread-safety" but in practice it, and has always returned an Stream.toList()ArrayList will return unmodifiable list for sure, and that's very unlikely to change because it would break a lot of code.