반응형
저는 파이썬 기반으로 Java를 배우려고 노력하고 있으므로 저를 참아주세요.
Sieve of Eratosthenes 메서드를 구현하고 있습니다 (Python에 하나가 있습니다. Java로 변환하려고합니다).
def prevPrimes(n):
"""Generates a list of primes up to 'n'"""
primes_dict = {i : True for i in range(3, n + 1, 2)}
for i in primes_dict:
if primes_dict[i]:
num = i
while (num * i <= n):
primes_dict[num*i] = False
num += 2
primes_dict[2] = True
return [num for num in primes_dict if primes_dict[num]]
이것이 Java로 변환하려는 시도입니다.
import java.util.*;
public class Sieve {
public static void sieve(int n){
System.out.println(n);
Map primes = new HashMap();
for(int x = 0; x < n+1; x++){
primes.put(x, true);
}
Set primeKeys = primes.keySet();
int[] keys = toArray(primeKeys); // attempt to convert the set to an array
System.out.println(primesKeys); // the conversion does not work
for(int x: keys){
System.out.println(x);
}
// still have more to add
System.out.println(primes);
}
}
내가 얻는 오류는 toArray (java.util.Set)
메소드를 찾을 수 없다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까?
해결 방법
우선 제네릭을 사용하십시오.
Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
Set<Integer> keys = map.keySet();
둘째, 집합을 배열로 변환하려면 toArray (T [] a)
를 사용할 수 있습니다.
Integer[] array = keys.toArray(new Integer[keys.size()]);
Integer
대신 int
를 원하는 경우 각 요소를 반복합니다.
int[] array = new int[keys.size()];
int index = 0;
for(Integer element : keys) array[index++] = element.intValue();
참조 페이지 https://stackoverflow.com/questions/16203880
반응형
'파이썬' 카테고리의 다른 글
파이썬 간단한 스레딩 이벤트 예제 (0) | 2021.01.19 |
---|---|
파이썬 numpy 행 합계로 행 나누기 (0) | 2021.01.19 |
파이썬 파일 모드 "w +"와 혼동 (0) | 2021.01.19 |
파이썬 Python 전역 변수 및 클래스 기능 (0) | 2021.01.19 |
파이썬 base64 문자열을 이미지로 변환하는 방법은 무엇입니까? (0) | 2021.01.19 |
댓글