Как создать Unmodifiable List/Set/Map с Collectors.toList/toSet/toMap, поскольку toList (и тому подобное) являются документами как:
Нет гарантий относительно типа, изменчивости, сериализуемости или безопасности потоков возвращаемого списка.
Перед java-10 вам нужно предоставить Function Collectors.collectingAndThen, например:
List<Integer> result = Arrays.asList(1, 2, 3, 4)
.stream()
.collect(Collectors.collectingAndThen(
Collectors.toList(),
x -> Collections.unmodifiableList(x)));