sourcecode

Java에서 Array List를 초기화하려면 어떻게 해야 하나요?

copyscript 2022. 7. 28. 23:41
반응형

Java에서 Array List를 초기화하려면 어떻게 해야 하나요?

이 모양은arraylist가 다음 작업을 수행하고 있지 않습니다.

// presizing 

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

나중에 접속을 시도하면:

list.get(5) 

0을 반환하는 대신 IndexOutOfBoundsException을 슬로우합니다. 인덱스 5가 길이 0의 경계를 벗어났습니다.

C++와 같이 모든 요소를 정확한 크기의 0으로 초기화하는 방법이 있습니까?

생성자에게 전달된 정수는 초기 용량, 즉 내부 배열 크기를 조정하기 전에 유지할 수 있는 요소의 수를 나타냅니다(목록의 초기 요소 수와는 무관함).

60개의 0으로 목록을 초기화하려면 다음 절차를 수행합니다.

List<Integer> list = new ArrayList<Integer>(Collections.nCopies(60, 0));

60개의 다른 오브젝트로 목록을 작성하려면 Stream API를 사용하여Supplier다음과 같습니다.

List<Person> persons = Stream.generate(Person::new)
                             .limit(60)
                             .collect(Collectors.toList());
// 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);

Java 8 구현(리스트가 0으로 초기화됨):

List<Integer> list = IntStream.of(new int[60])
                    .boxed()
                    .collect(Collectors.toList());
  • new int[N]- 0과 길이 N으로 채워진 배열을 만듭니다.
  • boxed()- 각 요소가 정수로 상자에 들어 있습니다.
  • collect(Collectors.toList())- 스트림 요소를 수집합니다.

현재 60대는 내장 스토리지용 초기 용량입니다.얼마나 클지 짐작할 수 있는 힌트입니다만, 물론 거기에 한정되는 것은 아닙니다.값을 사전 설정해야 하는 경우 다음과 같이 사용자가 직접 설정해야 합니다.

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

그런 거 아니에요.Array List는 어레이를 내부 응답으로만 사용합니다.요소를 60개 이상 추가하면 언더레이 배열을 확장할 수 있습니다.이 어레이에 RAM 용량만큼 요소를 추가할 수 있는 방법.

언급URL : https://stackoverflow.com/questions/5600668/how-can-i-initialize-an-arraylist-with-all-zeroes-in-java

반응형