tgoop.com/java_fillthegaps/524
Create:
Last Update:
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--){Выглядит жутко. Альтернатива — использовать Collections.reverse:
int value = list.get(i));
}
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