当前位置: 首页 > 面试题库 >

遍历和arraylist并删除指定索引处的元素

利博远
2023-03-14
问题内容

我正在尝试一个练习,在该练习中,我将1000个元素添加到arraylist中,然后再次从列表中系统地删除它们(通过指定索引)。其背后的想法是比较LinkedList和ArrayList的性能

int totalObjects = 0;
    for(int i = 0; i < 1000; i++)
    {
        totalObjects += 1;
        al.add("Object " + totalObjects);

    }
     System.out.println("The Arraylist size is " + al.size());

如果我执行以下操作,那么只有一半的元素会被删除…为什么呢?

for(int index = 0; index < al.size(); index++)
    {

        al.remove(index);

    }
    System.out.println("The Arraylist size after removal is " + al.size());

亲切的问候阿里安


问题答案:

发生这种情况是因为您要通过删除来更改索引。如果删除元素0,则元素1现在变为元素0。现在,当您下次删除1时,该元素曾经是元素2,而元素1仍然存在于索引0。

避免这种情况的最简单方法是从头到尾循环。

或者,您可以继续删除索引0,直到ArrayList为空。



 类似资料:
  • 我试图找出在单行中删除索引处的指定元素后是否有可能返回更新的ArrayList,以便将其传递给递归函数。下面是我的代码片段,它试图在给定n对“()”括号的情况下生成所有有效的括号组合。 我关心的是递归函数调用“findAllCombinations”,其中经过一些验证后,我希望在每次递归调用时从arrayList库集中删除一个字符。然而,源集。remove(index)返回一个字符。相反,我希望在

  • 问题内容: 我有一个要迭代的ArrayList。遍历它时,我必须同时删除元素。显然,这引发了。 解决此问题的最佳实践是什么?我应该先克隆列表吗? 我删除的不是循环本身的元素,而是代码的另一部分。 我的代码如下所示: 可能打电话; 问题答案: 两种选择: 创建要删除的值的列表,将其添加到循环中的列表中,然后在最后调用 在迭代器本身上使用该方法。请注意,这意味着你不能使用增强的for循环。 作为第二个

  • 问题内容: Java中是否有一种方法,只需指定开始索引和结束索引,即可将对象列表从Arraylist获取到另一个ArrayList? 问题答案: 是的,您可以使用以下方法: 这将返回原始列表那部分的视图,它不会复制数据。 如果要复制:

  • 我正在尝试编写一种方法,删除每组4个元素中的第一个、第二个和第三个元素。它似乎根本不起作用。有人能帮忙吗?

  • 本文向大家介绍C#遍历List并删除某个元素的方法,包括了C#遍历List并删除某个元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#遍历List并删除某个元素的方法。分享给大家供大家参考。具体如下: 1、我们选择用for循环: 如果这样循环,肯定不对, {A B C D E F G H}  假设当前遍历到D(i=3),移除,接着遍历i=4(F), 此时跳过了E(i=3) 2、

  • 当执行进入非Reps.remove行时,删除不是删除指定索引处的对象。为什么? 此解决方案打印:[a, b, c, d, e, f]当它应该是b, d, f时