2016-10-25 2 views
-1

방대한 양의 요소가있는 배열과 소수의 배열이있는 경우 코드가 느리게 실행됩니까? 비록 내가 그들 중 몇 개를 사용하고 있습니다.큰 배열이 있으면 코드가 느리게 실행됩니까?

let's 내가

int[] array = new int [9999999]; 

내가 9999999에 넣어하거나 괜찮 문제는 그렇게 할 것이라고? 왜냐하면 배열에 값을 넣지 않으면 "로컬 변수가 초기화되지 않았을 수 있습니다"라고 말할 것입니다. 기본적으로 무제한의 숫자를 삽입 할 수 있기를 바랍니다.

+4

'기본적으로 무제한의 숫자를 삽입 할 수 있기를 바랍니다 .' [컬렉션] (https://docs.oracle.com/javase/tutorial/collections/)을 사용하십시오. 배열의 길이는 고정되어 있고, List, Vector 및 다른 것들은 동적입니다. – BackSlash

+0

질문에 대답하려면 : 예, 시간이 오래 걸립니다. 배열을 초기화하려면 O (n) 시간이 걸립니다. – Keiwan

답변

0

배열 대신 List이 필요할 수 있습니다. 전자는 필요에 따라 동적으로 확장 할 수있는 데이터 구조입니다. 후자는 시작하기 전에 크기를 선택해야합니다.

성능은 코드에서 수행하게 될 많은 다른 것들의 영향을 받겠지 만, 이것이 그 중 하나 일지는 의문입니다. 당신을 포함하여 아무도 한 줄로 말할 수 없습니다.

+0

그래서 저는'int [] int = new int [9999999]'를 가지고 있습니다. 그리고 i는'int [i] = Double.parseDouble (part [i]])를 사용하여 숫자를 추가합니다. 그러나 대신 그것을 어떻게 목록으로 만들고 싶습니까? – maaax

0

글쎄요. 메모리 설정에 따라 같은

public static void main(String[] args) { 
    int []x =new int[999_999_999]; 
} 

으로 너무 큰 배열을 만드는 경우, 즉시 OutOfMemoryError 발생합니다.

하지만 하나도 던지지 않더라도 해당 배열을 할당하는 데는 여전히 시간이 걸립니다.

더 나은 방법은 List과 같은 동적 성장 구조를 사용하는 것입니다.

하지만 가능한 한 모든 것을 거대한 배열에 집어 넣지 않아도되도록 코드/알고리즘을 설계하는 것이 가장 좋습니다.

관련 문제