[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-11-25-sequenced-collections":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},414,"sequenced-collections",11,"java-11-25","Java 11–25","🆕","Sequenced Collections","Sequenced Collections (Java 21) — новые интерфейсы, добавляющие единообразный доступ к первому\u002Fпоследнему элементу и реверсу для всех упорядоченных коллекций через методы `getFirst()`, `getLast()`, `reversed()`.\n\n> **Аналогия из жизни:** до Java 21 у каждой очереди в магазине были разные правила: в одной спрашиваешь «кто первый?», в другой — «номер 1», в третьей — вообще не узнаешь. Sequenced Collections — единые правила для всех очередей.\n\n```java\n\u002F\u002F Проблема до Java 21:\n\u002F\u002F List:          list.get(0), list.get(list.size()-1)\n\u002F\u002F Deque:         deque.getFirst(), deque.getLast()\n\u002F\u002F SortedSet:     set.first(), set.last()\n\u002F\u002F LinkedHashSet: ??? (только через итератор)\n\n\u002F\u002F Java 21 — единый API:\nList\u003CString> list = new ArrayList\u003C>(List.of(\"A\", \"B\", \"C\"));\nlist.getFirst();  \u002F\u002F \"A\"\nlist.getLast();   \u002F\u002F \"C\"\nlist.reversed().forEach(System.out::println); \u002F\u002F C, B, A\n\n\u002F\u002F LinkedHashSet — теперь с getFirst\u002FgetLast\nLinkedHashSet\u003CString> set = new LinkedHashSet\u003C>(List.of(\"X\", \"Y\", \"Z\"));\nset.getFirst(); \u002F\u002F \"X\"\nset.getLast();  \u002F\u002F \"Z\"\n```\n\n### Иерархия интерфейсов\n\n```\n                  Collection\n                      |\n              SequencedCollection\n               \u002F            \\\n        List              SequencedSet\n                           \u002F       \\\n                     SortedSet   LinkedHashSet\n```\n\n### Частые ошибки\n\n- `getFirst()` на пустой коллекции — `NoSuchElementException`; проверяйте `isEmpty()`\n- Мутация через `reversed()` view — изменения в reversed view влияют на оригинальную коллекцию\n- `addFirst()` \u002F `addLast()` для unmodifiable — `UnsupportedOperationException`\n\n### Как используется в 2026\n\n- Sequenced Collections — часть стандартного API, используется повсеместно\n- Заменяет нечитаемые конструкции вроде `list.get(list.size() - 1)`\n\n> **На собеседовании:** покажите, что знаете проблему (разный API для первого\u002Fпоследнего элемента в List, Deque, SortedSet) и решение (единый интерфейс SequencedCollection). Упомяните, что `reversed()` возвращает view, а не копию.","","junior",[15],"java-modern",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Sequenced Collections — Gymterview","Sequenced Collections (Java 21) — новые интерфейсы, добавляющие единообразный доступ к первому\u002Fпоследнему элементу и реверсу для всех упорядоченных коллекций че","Sequenced Collections (Java 21) — новые интерфейсы, добавляющие единообразный доступ к первому\u002Fпоследнему элементу и рев",[15,13],"Sequenced Collections (Java 21) — новые интерфейсы, добавляющие единообразный доступ к первому\u002Fпоследнему элементу и реверсу для всех упорядоченных коллекций через методы `getFirst()`, `getLast()`, `reversed()`.",true]