반응형
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
반응형
'sourcecode' 카테고리의 다른 글
VueJ: 감시자 내부에서 구성 요소 속성을 업데이트할 수 없습니다. (0) | 2022.07.28 |
---|---|
임의의 번호의 Java 반올림 (0) | 2022.07.28 |
JVM과 HotSpot의 차이점 (0) | 2022.07.28 |
권장되는 VueJS 애플리케이션 API 및 Vuex 설계 패턴이 있습니까? (0) | 2022.07.28 |
C++ 프로그램에 대한 C 라이브러리 사용 (0) | 2022.07.27 |