Найти узел по значению в связанном списке - PullRequest
4 голосов
/ 04 ноября 2011

Мне было интересно, есть ли способ в java найти положение узла, когда у меня есть конкретное значение данных в качестве параметра.Например, если бы я хотел удалить узел до или после определенного объекта в связанном списке, как бы я это сделал?

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 ноября 2011

Операции с индексами очень неэффективны для LinkedList, поэтому лучше использовать ListIterator. Найдя искомый предмет, вы можете двигаться в любом направлении (это главное преимущество ListIterator над Iterator).

String search = ...;
LinkedList<String> list = ...;

for(
  ListIterator<String> listIter = list.listIterator( );
  listIter.hasNext();
  listIter.next( )
)
{
  String item = listIter.next( );

  if ( item.equals( search ) )
  {
     if (listIter.hasPrevious())
     {
        listIter.previous( );
        listIter.remove( );
        listIter.next( );
     }

     if (listIter.hasNext())
     {
        listIter.next( );
        listIter.remove( );
     }

     break;
  }
}
1 голос
/ 04 ноября 2011

Вы можете позвонить int i = list.indexOf(obj), чтобы получить индекс объекта. Затем просто используйте list.remove(i-1) для удаления предыдущего.

Вы должны добавить проверку границ, чтобы не получать исключения.

1 голос
/ 04 ноября 2011

Метод java.util.List indexOf( Object o ) используется для поиска индекса объекта.Оттуда вы должны быть в состоянии удалить объект до того, как он будет использовать List remove(index - 1).

. Естественно, это предполагает, что используемый вами связанный список реализует интерфейс java.util.List.(Это определенно верно для встроенного связанного списка Java.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...