请注意它如何没有以合理的方式删除它们。这就像它移动了数组中的所有内容,但这不是只有 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]
是的,LinkedList
的remove
方法有效地将元素的索引移出被删除的内容。
删除此列表中指定位置的元素。将任何后续元素向左移动(从其索引中减去一个(。返回已从列表中删除的元素。
删除索引 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
接口的任何类(包括 ArrayList
和 LinkedList
(,都必须如此。
> LinkedList
不会从第 0 个索引中删除元素,您可以通过示例进行检查,我也遇到了这样的问题,您可以使用array.remove(Object)
基于对象哈希码删除元素更安全的选项。
boolean isRemoved=array.remove(0);
if(!isRemoved) {
isRemoved = array.remove(array.get((int)(midIndex)));
}