В Java 10 будет улучшена поддержка неизменяемых коллекций

В Java 10, которая выйдет уже в марте этого года, появятся несколько новых методов, благодаря которым будет легче работать с неизменяемыми коллекциями.

Во-первых, это методы, создающие неизменяемую копию другой коллекции: List.copyOf(), Set.copyOf() и Map.copyOf(). Это является полезным дополнением, потому что в Java 9, чтобы создать, например, неизменяемую копию списка, нужно вызвать List.of(list.toArray()), что выглядит довольно неуклюже.

Во-вторых, это методы Collectors.toUnmodifiableList(), Collectors.toUnmodifiableSet() и Collectors.toUnmodifiableMap(). Они позволяют свернуть Stream и вернуть соответствующую неизменяемую коллекцию:

// Generate all powers of 2 less than 100
// and return an unmodifiable List
Stream
    .iterate(1, i -> i < 100, i -> i * 2)
    .collect(toUnmodifiableList());
// [1, 2, 4, 8, 16, 32, 64]

Напомним, что неизменяемые коллекции впервые появились в Java 9 с введением методов-фабрик: List.of(), Set.of(), Map.of() и Map.ofEntries(). До Java 9 поддержки неизменяемых коллекций не было, а были только неизменяемые view коллекций: Collections.unmodifiableCollection(), Collections.unmodifiableList() и т.д.

Подписывайтесь на канал в Telegram, чтобы не пропускать новости.

Все материалы на этом сайте выложены под лицензией CC BY-SA 4.0
© Евгений Козлов, 2017-2020