繁体   English   中英

从linkedlist中的value中查找节点

[英]Find node from value in linkedlist

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

谢谢

对于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;
  }
}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM