在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