gpt4 book ai didi

java - 在 java 中我们可以使用 list.remove(int index) 来删除该索引中的项目,如果列表很大而我们只能使用 long 来存储索引怎么办?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:00 25 4
gpt4 key购买 nike

当我使用“Eratosthenes 筛法”生成素数时遇到了这个问题。我想创建一个方法,它接受一个列表,然后删除 3 之后的每个第 3 个列表:[2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29...] -> [2, 3, 5, 7, 11, 13, 17, 19, 23, 25, 29...]。这是我的代码:

  private static void removeThird(List<Long> l) {

int i = 1;
int count = 0;
while (i < l.size()) {

// System.out.print(count + ":"); //debug
// System.out.print(l.get(i) + " ");
if (count == 3) {
l.remove(i);
count = 1;
}
i ++;
count ++;
}
}

此代码有效,但因为我想生成大量质数,所以我需要一个非常长的列表。因此,如果我希望能够访问和修改列表中的每个项目,我将需要一个 long 类型来存储我的索引。于是我把int i = 0改成long i = 0,代码就不行了。我查看了有关列表类的文档,意识到我只能调用 list.remove(int index)。我想知道如果我想调用 list.remove(long index) 怎么办?有办法吗?谢谢!

最佳答案

List 及其实现仅适用于大小适合 int 正半部分的列表。例如,“仅”最多 4,294,967,296 个条目(索引 0 - 4294967295,包括在内)。

如果您需要一个比这更长的列表,您将需要找到一个非 JDK 列表类型或实现您自己的列表。

关于java - 在 java 中我们可以使用 list.remove(int index) 来删除该索引中的项目,如果列表很大而我们只能使用 long 来存储索引怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39637286/

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