Nano Hash - криптовалюты, майнинг, программирование

Итератор LinkedList удалить

У меня вопрос по итератору связанного списка

Если я использую следующие, предыдущие и методы удаления

Например :

name.add("Alvin")
name.add("Keven") 
name.add("Jack") 

ListIterator<String> iterator = name.listIteraot();  //|AKJ

iterator.next(); // A|KJ
iterator.next(); // AK|J

iterator.add("Nina") // AKN|J 

iterator.next(); // AKNJ| 

iterator.remove(); // AKN|

В методе next, а затем remove мы удаляем элемент перед указателем итератора, как показано в примере.

ПОМЕЩАТЬ

я запутался с предыдущим а потом удалить например

myLList.add("Mary"); 
myLList.add("John"); 
myLList.add("Sue"); 

ListIterator<String> iterator = myLList.iterator 

itorator.next();
itorator.next();
itorator.add("Robert");
itorator.pervios();
itorator.pervios();
itorator.remove();

System.out.println(myLList); 

ответ на это будет [Mary , Robert , Sue ]

как мы удаляем для предыдущего! Удалим элемент справа?

Потому что я думал, что удаление всегда будет идти назад, а не вперед


  • Ваш вопрос не ясен, кого вы хотите удалить? 27.05.2015
  • мой вопрос заключается в том, как мы удаляем после использования предыдущего, удаляем ли мы элемент после указателя итератора или перед ним, как вы видите во втором примере, который я поставил о предыдущем, ответ был [Мери, Роберт, Сью], но мой ответ на это было то, что мы удаляем Мери после того, как мы переходим к предыдущему .. теперь, какой из них правильный и почему? Удаляем ли мы элемент перед указателем или после указателя 27.05.2015
  • Прочтите javadoc: там написано: Обратите внимание, что методы remove() и set(Object) не определяются с точки зрения позиции курсора; они определены для работы с последним элементом, возвращенным вызовом next() или previous(). И когда вы публикуете код, размещайте код, который компилируется. 27.05.2015

Ответы:


1

мой вопрос в том, как мы удаляем после использования предыдущего, удаляем ли мы элемент после указателя итератора или до?

Из документации ListIterator#remove :

Удаляет из списка последний элемент, возвращенный next() или предыдущим() (необязательная операция). Этот вызов может быть сделан только один раз за вызов следующего или предыдущего. Это можно сделать только в том случае, если add(E) не был вызван после последнего вызова следующего или предыдущего.

Другими словами, вы не удаляете ни после, ни перед указателем. В документации указано, что метод remove не зависит от положения указателя и удалит объект, возвращенный последним вызовом следующего/предыдущего.

Однако в ListIterator все еще существует указатель, который находится между элементами, как описано в верхней части ListIterator документация.

27.05.2015
  • Итак, вы имеете в виду, что мы удаляем элемент, который мы пропускаем, чтобы перейти к предыдущему ??? и элемент, который мы пропускаем, чтобы идти дальше?? направление удаления не имеет значения! 27.05.2015
  • вы не поняли мою точку зрения, они учат нас, что если мы идем дальше между элементами, мы помещаем вертикальную линию между элементами и перемещаем их с каждым следующим, а затем, когда у нас есть метод удаления, мы удаляем элемент, который находится перед этим линия .. 27.05.2015
  • они учат нас, что также с предыдущим методом мы помещаем эту строку и идем вперед, поэтому я был сбит с толку, как они удалили Джона, который был после строки, и оставили Марей, который был перед строкой: S 27.05.2015
  • да, я понимаю, что вы мне сказали, но я говорю вам, чему меня учат, и я запутался 27.05.2015
  • @MayyasahAl-Bahrani То, чему они вас учили, верно. См. объяснение в верхней части документации о том, как обрабатывается курсор: docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html. 27.05.2015
  • @MayyasahAl-Bahrani Я отредактировал свой пост, может быть, теперь вам стало понятнее? 27.05.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..