java - Array 和 ArrayList 获取素数有什么区别?

标签 java arrays arraylist

我正在解决关于素数的问题,我找到了使用数组的解决方案,但我想使用数组列表来解决一些问题,其中之一就是很好地理解数组列表。但是我发现当我使用 arraylist 时结果不一样,这里有 2 个代码:

//使用数组

import java.util.Arrays;
public class Prime {
    public static void main(String[] args) {
        primeNumber(100);
    }
    public static void primeNumber(int end) {
        boolean primeNumbers[] = new boolean[end]; 
        for (int i = 0; i < end; i++) {
            primeNumbers[i] = true;
        }
        for (int i = 2; i < primeNumbers.length; i++) {
            if (primeNumbers[i] ) {
                for (int j = i+i; j < primeNumbers.length; j += i) {
                    primeNumbers[j]= false;
                }
            }
        }
        for (int j = 2; j < primeNumbers.length; j++) {
            if (primeNumbers[j]) {
                System.out.println(j);

            }
        }   
    }
}

//使用ArrayList

import java.util.ArrayList;
public class Prime {
    public static void main(String[] args) {
        primeNumber(100);
    }

    public static void primeNumber(int end) {
        ArrayList<Boolean> primeNumbers = new ArrayList<Boolean>(); 
        for (int i = 0; i < end; i++) {
            primeNumbers.add(i,true);
        }
        for (int i = 2; i < primeNumbers.size(); i++) {
            if (primeNumbers.get(i) ) {
                for (int j = i+i; j < primeNumbers.size(); j += i) {
                    primeNumbers.add(j, false);
                }
            }
        }
        for (int j = 2; j < primeNumbers.size(); j++) {
            if (primeNumbers.get(j)) {
                System.out.println(j);

            }
        }

    }
}

我能知道我在使用 Arraylist 时做错了什么吗?如果我想使用 Arraylist 来获得相同的结果,我应该怎么做。

非常感谢您的帮助。

最佳答案

代替

primeNumbers.add(j, false);

你应该使用

primeNumbers.set(j, false);

add()在指定位置添加一个新元素(意味着 ArrayList 增加一个元素),但是 set()只设置指定位置元素的值。

关于java - Array 和 ArrayList 获取素数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350115/

相关文章:

java - RSA Java 投诉签名和验证

java - Jackson 使用 JsonTypeInfo.As.WRAPPER_OBJECT 时排除特定类的包装

arrays - 按值对嵌套数组进行排序?

C# ArrayList 的 Java 等效项

java - 256 个 java 字节码如何转换为 java 所做的一切(图形、IO 等)

java - 将文本对齐到整行

c - 格式化字符数组中的文件输入文本?

Python:如何在多处理池中使用值和数组

java - 如何从数据库 Arraylist 在 Google map 上添加标记

java - 将 vector 转换为数组列表