簡體   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