我需要迭代LinkedList<T>
(在 .NET 2.0 中)并根据给定标准删除所有项目。
在 Java 下这是很简单的方法,因为我可以执行以下操作:
Iterator<E> i = list.iterator();
while (i.hasNext()) {
E e = i.next();
if (e == x) {
// Found, so move it to the front,
i.remove();
list.addFirst(x);
// Return it
return x;
}
}
不幸的是,在 .NET 行为中IEnumerator<T>
(相当于Iterator<E>
)没有remove
方法从集合中删除当前元素。
另外,在LinkedList<T>
无法访问给定索引处的元素,无法通过从最后一个元素迭代到第一个元素来完成任务。
您知道如何做吗?非常感谢!
这将在链表的一个循环中删除与某一条件匹配的所有节点。
LinkedListNode<E> node = list.First;
while (node != null)
{
var next = node.Next;
if (node.Value == x) {
list.Remove(e);
}
node = next;
}
我相信这就是您正在尝试的...您还添加回了列表开头的节点(因此您的java代码没有删除所有节点,而是将第一个匹配移动到列表的开头)。使用这种方法也很容易做到这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)