JAVA_FILLTHEGAPS Telegram 524
Java 21: sequenced collections
или "фича, которая опоздала на 25 лет".

19 сентября выходит java 21, и среди прочего там будет JEP 431: Sequenced Collections.

В чём суть изменений?

В JDK добавится новый интерфейс SequencedCollection. В него войдут методы, которые должны были появиться в джаве ещё в 98 году. Простые операции, для которых каждый раз пишется маленький велосипедик🚲

♨️ Пример 1: получить последний элемент в списке

Сейчас это так:
last = list.get(list.size() - 1);

В java 21 наконец-то появится специальный метод:
last = list.getLast();

♨️ Пример 2: пройти список в обратном порядке

Сейчас это так:
for(int i=list.size(); i>0; i--){
int value = list.get(i));
}

Выглядит жутко. Альтернатива — использовать Collections.reverse:

List<Integer> reversed = new ArrayList<>(list);
Collections.reverse(reversed);
reversed.forEach(…);

Выглядит симпатичнее, но здесь море лишних действий: создаём новую(!) коллекцию, переставляем её элементы и только потом делаем обход.

В java 21 всё гораздо проще:
list.reversed().forEach(…)

Метод reversed не меняет исходную коллекцию и возвращает view с обратным порядком обхода.

♨️ Пример 3: обойти LinkedHashSet

LinkedHashSet — список с уникальными элементами. Хотя это список, класс реализует только интерфейс Set. Поэтому работы с индексами нет вообще.

Получить первый элемент ещё можно:
first = linkedHashSet.iterator().next();

А вот последний — никак, надо полностью обходить структуру. Код писать не буду, слишком громоздкий.

В java 21 те же операции выполняются легко и просто:
first = linkedHashSet.getFirst();
last = linkedHashSet.getLast();

Резюме

В java 21 появится интерфейс SequencedCollection с методами
▫️ SequencedCollection<E> reversed()
▫️ void addFirst(E)
▫️ void addLast(E)
▫️ E getFirst()
▫️ E getLast()
▫️ E removeFirst()
▫️ E removeLast()

Плюс интерфейсы SequencedSet и SequencedMap с тем же функционалом.

Новые методы появятся в ArrayList, LinkedList, HashSet, LinkedHashMap, LinkedHashSet, частично в TreeSet и некоторых других классах.

Было бы здорово увидеть эти методы 25 лет назад, но лучше поздно, чем никогда:)



tgoop.com/java_fillthegaps/524
Create:
Last Update:

Java 21: sequenced collections
или "фича, которая опоздала на 25 лет".

19 сентября выходит java 21, и среди прочего там будет JEP 431: Sequenced Collections.

В чём суть изменений?

В JDK добавится новый интерфейс SequencedCollection. В него войдут методы, которые должны были появиться в джаве ещё в 98 году. Простые операции, для которых каждый раз пишется маленький велосипедик🚲

♨️ Пример 1: получить последний элемент в списке

Сейчас это так:
last = list.get(list.size() - 1);

В java 21 наконец-то появится специальный метод:

last = list.getLast();

♨️ Пример 2: пройти список в обратном порядке

Сейчас это так:
for(int i=list.size(); i>0; i--){
int value = list.get(i));
}

Выглядит жутко. Альтернатива — использовать Collections.reverse:

List<Integer> reversed = new ArrayList<>(list);
Collections.reverse(reversed);
reversed.forEach(…);

Выглядит симпатичнее, но здесь море лишних действий: создаём новую(!) коллекцию, переставляем её элементы и только потом делаем обход.

В java 21 всё гораздо проще:
list.reversed().forEach(…)

Метод reversed не меняет исходную коллекцию и возвращает view с обратным порядком обхода.

♨️ Пример 3: обойти LinkedHashSet

LinkedHashSet — список с уникальными элементами. Хотя это список, класс реализует только интерфейс Set. Поэтому работы с индексами нет вообще.

Получить первый элемент ещё можно:
first = linkedHashSet.iterator().next();

А вот последний — никак, надо полностью обходить структуру. Код писать не буду, слишком громоздкий.

В java 21 те же операции выполняются легко и просто:
first = linkedHashSet.getFirst();
last = linkedHashSet.getLast();

Резюме

В java 21 появится интерфейс SequencedCollection с методами
▫️ SequencedCollection<E> reversed()
▫️ void addFirst(E)
▫️ void addLast(E)
▫️ E getFirst()
▫️ E getLast()
▫️ E removeFirst()
▫️ E removeLast()

Плюс интерфейсы SequencedSet и SequencedMap с тем же функционалом.

Новые методы появятся в ArrayList, LinkedList, HashSet, LinkedHashMap, LinkedHashSet, частично в TreeSet и некоторых других классах.

Было бы здорово увидеть эти методы 25 лет назад, но лучше поздно, чем никогда:)

BY Java: fill the gaps


Share with your friend now:
tgoop.com/java_fillthegaps/524

View MORE
Open in Telegram


Telegram News

Date: |

While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. The Channel name and bio must be no more than 255 characters long "Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn. Each account can create up to 10 public channels
from us


Telegram Java: fill the gaps
FROM American