Java 从linkedlist中的值查找节点
我想知道,当我将特定的数据值作为参数时,java中是否有一种方法可以找到节点的位置。例如,如果我想删除链接列表中特定对象之前或之后的节点,我将如何执行此操作Java 从linkedlist中的值查找节点,java,linked-list,Java,Linked List,我想知道,当我将特定的数据值作为参数时,java中是否有一种方法可以找到节点的位置。例如,如果我想删除链接列表中特定对象之前或之后的节点,我将如何执行此操作 感谢java.util.List的indexOf(Object o)方法用于查找对象的索引。从那里,您应该能够使用列表的remove(index-1)删除对象之前的对象 当然,这是假设您使用的链表实现了java.util.list接口。(对于java的内置链表来说,这是绝对正确的。)您可以调用inti=list.indexOf(obj)来获
感谢java.util.List的
indexOf(Object o)
方法用于查找对象的索引。从那里,您应该能够使用列表的remove(index-1)
删除对象之前的对象
当然,这是假设您使用的链表实现了java.util.list接口。(对于java的内置链表来说,这是绝对正确的。)您可以调用
inti=list.indexOf(obj)
来获取对象的索引。然后只需使用list.remove(i-1)
即可删除上一个
您应该添加边界检查,这样就不会出现异常。索引操作对于
LinkedList
非常低效,这就是为什么最好使用ListIterator
。找到要查找的项目后,它允许您向任意方向移动(这是listierator
优于Iterator
的主要优势)
字符串搜索=。。。;
链接列表=。。。;
为了(
ListIterator listIter=list.ListIterator();
listIter.hasNext();
listIter.next()
)
{
stringitem=listIter.next();
if(item.equals(搜索))
{
if(listIter.hasPrevious())
{
previous();
remove();
next();
}
if(listIter.hasNext())
{
next();
remove();
}
打破
}
}
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;
}
}