Java LinkedList remove 方法不能正确删除元素



请注意它如何没有以合理的方式删除它们。这就像它移动了数组中的所有内容,但这不是只有 ArrayList 才能做的事情吗?

 public static void main(String[] args) {
    // create a list of integer to Test our logic.
    LinkedList<Integer> halfOf = new LinkedList<Integer>();
    halfOf.add(1);
    halfOf.add(2);
    halfOf.add(3);
    halfOf.add(4);
    halfOf.add(5);
    halfOf.add(6);
    halfOf.add(7);
    halfOf.add(8);

    halfOf.remove(0);
    halfOf.remove(1);
    halfOf.remove(2);
    System.out.println(halfOf);

给出输出:

[2, 4, 6, 7, 8]

是的,LinkedListremove方法有效地将元素的索引移出被删除的内容。

删除此列表中指定位置的元素。将任何后续元素向左移动(从其索引中减去一个(。返回已从列表中删除的元素。

删除索引 0 后:

[2, 3, 4, 5, 6, 7, 8]

删除索引 1 后:

[2, 4, 5, 6, 7, 8]

删除索引 2 后:

[2, 4, 6, 7, 8]

就像ArrayList一样,您应该跟踪要删除的索引。 以这种方式删除多个元素的最简单方法是先删除它们的最高索引。

来自List.remove()的文档

。将任何后续元素向左移动...

对于实现List接口的任何类(包括 ArrayListLinkedList(,都必须如此。

> LinkedList 不会从第 0 个索引中删除元素,您可以通过示例进行检查,我也遇到了这样的问题,您可以使用array.remove(Object)基于对象哈希码删除元素更安全的选项。

boolean isRemoved=array.remove(0);
if(!isRemoved) {
    isRemoved = array.remove(array.get((int)(midIndex)));
}

相关内容

  • 没有找到相关文章

最新更新