[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-kak-perebrat-elementy-linkedlist-v-obratnom-poryadke-bez-medlennogo-get-index":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":17,"progress":18,"seo":19},463,"kak-perebrat-elementy-linkedlist-v-obratnom-poryadke-bez-medlennogo-get-index",12,"collections","Collections","📚","Как перебрать элементы LinkedList в обратном порядке без медленного get(index)","Для обхода в обратном порядке используется метод `descendingIterator()`, который возвращает итератор, начинающий с последнего элемента и идущий к первому. Каждый переход по ссылке `prev` занимает O(1).\n\n```java\nIterator\u003CString> it = linkedList.descendingIterator();\nwhile (it.hasNext()) {\n    System.out.println(it.next());\n}\n```\n\nАльтернативный способ — использовать `ListIterator`, инициализированный позицией в конце списка:\n\n```java\nListIterator\u003CString> it = linkedList.listIterator(linkedList.size());\nwhile (it.hasPrevious()) {\n    System.out.println(it.previous());\n}\n```\n\nИспользование `get(index)` в цикле от конца к началу приведет к O(N^2), потому что каждый вызов `get(i)` потребует обхода списка от начала или конца до позиции i.\n\n> **На собеседовании:** назовите descendingIterator() как основной способ. Объясните, почему get(index) в цикле — это O(N^2).","","junior",[15,16],"основы","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"Обратный обход LinkedList — descendingIterator — Gymterview","descendingIterator() — итератор от последнего к первому элементу через ссылки prev, O(N). Альтернатива — listIterator(size) + previous(). get(index) в цикле — O(N^2).","Обратный обход LinkedList — Gymterview","descendingIterator() или listIterator(size) + previous(). get(index) — O(N^2), не использовать.",[25,26,27,28,29,30,31,32],"LinkedList","descendingIterator","ListIterator","previous","обратный обход","O(N)","Java","собеседование","descendingIterator() — итератор от последнего к первому через ссылки prev, O(N). Альтернатива: listIterator(size) + previous(). get(index) в обратном цикле — O(N^2), каждый get(i) обходит список.",true]