我正在使用Java LinkedList
,据我所知,没有LinkedList.next(int);
,但有ListIterator.next()
,它通过{{1}发挥作用}}。但是,正如我所知:使用LinkedList.listIterator()
遍历元素(花费O(n)时间)将在删除所有元素后失败(对删除本身进行常量操作,但是O(n) )到达元素。)
尝试以简单的方式删除某些k< = n元素,如下所示:
ListIterator
是O(n ^ 2)运算,因为n if (list.get(++index).equals(elementToRemove))
{
list.remove(index);
}
中的每一个都是O(n)。
有没有办法在线性时间内遍历get()
并删除应该去的元素?
答案 0 :(得分:3)
for (Iterator<T> iterator = list.iterator(); iterator.hasNext(); ) {
T element = iterator.next();
if (element.equals(elementToRemove)) {
iterator.remove();
}
}
答案 1 :(得分:1)
如果您不关心就地处理,可以使用
public <T> T[] toArray(T[] a)
功能,然后遍历表格,只将所需的项目添加到新列表