用戶貼出一張代碼截圖,詢問 List 是如何被賦值的。截圖僅展示了集合聲明與初始化部分。
List<Integer> primes = List.of(2, 3, 5, 7, 11); // 不可變列表
List<Integer> primes = new ArrayList<>(Arrays.asList(2, 3, 5, 7, 11));
List<Integer> primes = new ArrayList<Integer>() {{
add(2); add(3); add(5); add(7); add(11);
}};
List<Integer> primes = IntStream.rangeClosed(2, 100)
.filter(n -> isPrime(n))
.boxed()
.collect(Collectors.toList());
public static List<Integer> sieveOfEratosthenes(int n) {
boolean[] isPrime = new boolean[n + 1];
Arrays.fill(isPrime, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
List<Integer> primes = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (isPrime[i]) primes.add(i);
}
return primes;
}
時間複雜度 O(n log log n),空間 O(n),適合 n < 10^7 量級。
截圖中僅見集合初始化,實際賦值邏輯可能在後續循環或流式操作中。掌握上述初始化方式與篩法算法,可高效解決素數相關問題。