gpt4 book ai didi

java - Java 中的循环异常

转载 作者:行者123 更新时间:2023-12-02 08:10:38 26 4
gpt4 key购买 nike

我有这段代码来测试链表和数组列表之间的性能:

long start = System.currentTimeMillis();
for (int i = 0; i < 1E5; i++) {
list.add(i);
}

for (int i = 0; i < 1E5; i++) {
list.remove(i);
}

long end = System.currentTimeMillis();

System.out.println(type + ":" + (end - start));

但后来我得到了这个错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 50000,Size:50000.

我很困惑。所以我打开我的 Visual Studio 并尝试用 C# 做同样的事情:

List<int> numbers = new List<int>();
for (int i = 0; i < 1E5; i++)
{
numbers.Add(i);
}

for (int i = 0; i < 1E5; i++)
{
numbers.Remove(i);
}

Console.WriteLine("It's done");

它运行得很好。那么我是不是在 java 代码上做错了,或者在这里学习了一些特别的东西!对不起,如果我写不好英文:(

最佳答案

remove(int) 删除给定索引处的项目,并且您想调用 .NET 执行的 remove(Object)

list.add(Integer.valueOf(i));
list.remove(Integer.valueOf(i));

旧答案

删除时,大小发生变化,最后只有一个元素位于 i=0,但您要删除 100000-1。

for (int i = 0; i < 1E5; i++) {
list.remove(i);
}

要么做

for (int i = 0; i < 1E5; i++) {
list.remove(0);
}

for (int i = 0; i < 1E5; i++) {
list.remove(list.size() - 1);
}

for (int i = 0; i < 100_000; i++) {
list.remove(i % list.size());
}

关于java - Java 中的循环异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47417915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com