삭제 - java arraylist 배열 초기화




어떻게하면 Java에서 모두 0으로 ArrayList를 초기화 할 수 있습니까? (4)

arraylist 가 presizing을 위해 그 일을하지 않고있는 것처럼 보입니다 :

// presizing 

ArrayList<Integer>() list = new ArrayList<Integer>(60);

이후에 액세스하려고하면 :

list.get(5) 

그것은 0 대신 null을 보여줍니다. C ++과 같은 정확한 크기의 모든 요소를 ​​0으로 초기화하는 방법이 있습니까?


Java 8 구현 (목록이 60 초기화 됨) :

List<Integer> list = IntStream.of(new int[60])
                    .boxed()
                    .collect(Collectors.toList());
  • new int[N] - 길이와 길이가 0 인 배열을 만듭니다.
  • boxed() - 각 요소를 정수로 묶었습니다.
  • collect(Collectors.toList()) - 스트림 요소를 수집합니다.

그것은 그렇게되지 않습니다. ArrayList는 내부 respentation으로 배열을 사용합니다. 60 개 이상의 요소를 추가하면 밑받침 배열이 무효화됩니다. 얼마나 많은 RAM을 가진 배열만큼 많은 요소를 추가 할 수 있습니까?


전달중인 60은 내부 저장 용량의 초기 용량입니다. 얼마나 큰지에 대한 힌트 일 뿐이지 만 물론 그것에 국한되지는 않습니다. 값을 미리 설정해야하는 경우 직접 설정해야합니다 (예 :

for (int i = 0; i < 60; i++) {
    list.add(0);
}

// apparently this is broken. Whoops for me!
java.util.Collections.fill(list,new Integer(0));

// this is better
Integer[] data = new Integer[60];
Arrays.fill(data,new Integer(0));
List<Integer> list = Arrays.asList(data);




collections