在Java中使用long ArrayList索引

我正在编写此Java程序,以使用Eratosthenes的Sieve查找到num为止的所有素数,但是当我尝试编译时,它说我不能将long

var用作数组索引,并且期望int var in它的位置。但是我将使用大量数据,因此不能使用int。我能做什么?

import java.util.*;

import java.lang.*;

public class t3{

public static void main(String[] args){

long num = 100;

//declaring list and filling it with numbers

ArrayList<Long> numlist = new ArrayList<Long>();

for(long x=2 ; x<num ; x++){

numlist.add(new Long(x));

}

//sieve or eratosthenes

for(long x=0 ; x<Math.sqrt(num) ; x++){

for(long y=x+1 ; y<numlist.size() ; y++){

if(numlist[y]%numlist[x] == 0){

numlist.remove(y);

}

}

}

//print list

for(Object item : numlist){

System.out.println((Long)item);

}

}

}

回答:

我不确定为什么您的代码会首先开始编译。

您不应该在数组列表中使用[]访问成员。arraylist只是内部存储在数组中的列表。您必须使用列表get操作(仍为O(1))。编写numlist

[index]意味着numlist中有一个对象数组。您不能像C ++中那样覆盖[]操作。

另外,在Java中,int是32位。长度大于2 ^ 32的数组(因此您将需要长索引)是不太可能的,而且我甚至不确定规范是否允许它。

以上是 在Java中使用long ArrayList索引 的全部内容, 来源链接: utcz.com/qa/409744.html

回到顶部