我有一个 ArrayList<Integer> primes
保存 3 到 1993 年之间的素数。在这个范围内有 300 个素数。但是,在调试期间,我看到加载列表后其大小为 366,索引 300 - 365 包含值 null
。为什么?
public class SeminarProblem {
public static void main(String[] args) {
ArrayList<Integer> primes = new ArrayList<Integer>();
for (int i = 1993; i >= 3; i -= 2) {
if (isPrime(i)) {
primes.add(i);
}
}
public static boolean isPrime(int n) {
if (n == 2 || n == 3) {
return true;
}
if (n % 2 == 0 || n == 1) {
return false;
}
else {
if (n % 6 != 1 && n % 6 != 5) {
return false;
}
for (int i = 3; i <= (int) Math.sqrt(n); i = i + 2) {
if (n % i == 0) {
return false;
}
}
}
return true;
}
}
答案 0 :(得分:0)
它的剩余索引没有被代码利用,随着 Arraylist 满了,它的大小就会增加 new size = (current size*3/4)+1 ;
*您正在调试内部数组
除此之外,您只会得到 300
值而没有空值。