2011-09-01 2 views
3

배열을 추가 할 위치를 모른 채 배열에 요소를 추가하는 방법을 찾으려고합니다. 예 : 이 같은 것을하는 대신 ...배열의 다음 여유 공간에 요소를 추가하는 방법은 무엇입니까?

double[] myArray = new double[10]; 
myArray[5] = 1.0; 

다음 사용 가능한 공간에 요소를 추가하고 싶습니다. 자바에서도 가능합니까? 죄송합니다. 간단한 질문인데, 저는이 언어에 익숙하지 않습니다.

답변

5

먼저 "자유"를 정의하십시오. 첫 번째 0 값을 찾을 수 없습니다. 실제로 일 경우에 0을 실제 값으로 저장하려고합니다. 이것은 의도적으로 단순한 것을

double[] myArray = new double[10]; 
int nextIndex = 0; 

myArray[nextIndex++] = 1234; 
... etc 

myArray[nextIndex++] = 1.0; 

참고 :

유일한 방법은 당신이 마지막으로 삽입 위치를 추적하는 것입니다. 자동으로 을 확장하고 추가 쉽게 배열 등

당신의 더 나은 옵션이 ArrayList처럼 컬렉션을 사용하는 것입니다의 끝을 실행 방지하지 않습니다.

+0

감사합니다. 언급 한 시나리오로 인해 가능했는지 확신 할 수 없었습니다. 당신의 도움을 주셔서 감사합니다. –

1

null은 분명히 "비어 있음"을 의미하는 객체 참조의 배열에 훨씬 더 의미가 있습니다. 그러나 단지 double 배열의 경우 0은 "비어 있음"을 의미한다고 가정 해 보겠습니다. 그래서 ...

int index = -1; 
for (int i=0; i<array.length; ++i) { 
    if (array[i] == 0) { 
     array[i] = 5; 
     index = i; 
     break; 
    } 
} 

그럼 당신은 설정하거나 배열이 전체 인 경우 -1 인 요소에 index 점.

4

배열에는 "여유 공간"이 없습니다. 원하는 경우 "마법 값"(예 : 0 또는 유형에 따라 null)을 사용하여 비어 있음을 나타낼 수 있습니다. 그런 다음이 값을 찾고 배열을 검색 할 수 있습니다

int i = Array.asList(array).indexOf(0.0); 

몇 가지 경고 :

  • 는 배열을 스캔 요구하기 때문에이 느려질 수 있습니다.
  • 배열에 저장하려는 요소로 마법 값을 사용할 수 없도록해야합니다.

가변 개수의 요소를 포함 할 수있는 컬렉션을 원할 경우 배열을 사용하지 마십시오. 예를 들어, ArrayList 및 그 add 메서드를 사용하여 끝에 요소를 추가 할 수 있습니다.

관련 문제