请注意它是如何以合理的方式删除它们的。它就像是在移动数组中的所有内容,但不仅仅是ArrayLists所做的事情吗?
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]
答案 0 :(得分:5)
是的,LinkedList
's remove
method有效地将元素索引转移到删除之外。
删除此列表中指定位置的元素。将任何后续元素向左移位(从索引中减去一个)。返回从列表中删除的元素。
删除索引0后:
[2, 3, 4, 5, 6, 7, 8]
删除索引1后:
[2, 4, 5, 6, 7, 8]
删除索引2后:
[2, 4, 6, 7, 8]
与ArrayList
一样,您应该跟踪您要删除的索引。以这种方式删除多个元素的最简单方法是首先删除它们的最高索引。
答案 1 :(得分:1)
答案 2 :(得分:0)
LinkedList
不会从示例中检查的第0个索引中删除元素,我也面临这样的问题,您可以使用array.remove(Object)
来基于对象哈希码删除元素,这是更安全的选择。
boolean isRemoved=array.remove(0);
if(!isRemoved) {
isRemoved = array.remove(array.get((int)(midIndex)));
}