从linkedlist中的value中查找节点

时间:2011-11-04 01:44:45

标签: java linked-list

当我将特定数据值作为参数时,我想知道在java中是否有办法找到节点的位置。例如,如果我想在链表中的特定对象之前或之后删除节点,我该怎么做?

由于

3 个答案:

答案 0 :(得分:2)

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 :(得分:1)

java.util.List的indexOf( Object o )方法用于查找对象的索引。从那里,您应该能够在使用List的remove(index - 1)

之前删除对象

当然,这假设您使用的链表实现了java.util.List接口。 (对于java的内置链表,这绝对是正确的。)

答案 2 :(得分:1)

您可以调用int i = list.indexOf(obj)来获取对象的索引。然后只需使用list.remove(i-1)删除之前的内容。

您应该添加边界检查,这样您就不会获得例外。