为什么我的 ArrayList<Integer> 包含空值?

时间:2021-01-27 05:10:20

标签: java arraylist

我有一个 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;
    }

}

    

1 个答案:

答案 0 :(得分:0)

它的剩余索引没有被代码利用,随着 Arraylist 满了,它的大小就会增加 new size = (current size*3/4)+1 ;

<块引用>

*您正在调试内部数组

除此之外,您只会得到 300 值而没有空值。