programing

Java에서의 가변 길이(다이나믹) 어레이

nicescript 2022. 12. 29. 22:00
반응형

Java에서의 가변 길이(다이나믹) 어레이

프로그램을 실행하는 동안 크기와 값이 변경되도록 정수 배열을 초기화하려면 어떻게 해야 합니까?

예: Array List를 사용합니다.

Java에서 "일반" 어레이는 고정 크기입니다.사이즈를 알려줘야 하고 확대하거나 축소할 수 없어요.크기를 변경하려면 새로운 어레이를 만들고 원하는 데이터를 복사해야 합니다.그것은 비효율적이고 귀찮은 일입니다.

다행히 공통 데이터 구조 및 기타 유용한 도구를 구현하는 모든 종류의 빌트인 클래스가 있습니다.Java 6 API에서 전체 목록을 확인할 수 있습니다.

한 가지 주의사항:ArrayList는 오브젝트(예를 들어 정수)만 유지할 수 있으며, 프리미티브(예를 들어 int)는 유지할 수 없습니다.대부분의 경우 오토박싱/오토박스가 이 문제를 조용히 처리해 주지만, 하는 일에 따라서는 이상한 행동을 할 수 있습니다.

Java의 어레이는 고정 크기입니다.필요한 것은 Java에서 이용 가능한 매우 귀중한 컬렉션 중 하나인 Array List입니다.

대신

Integer[] ints = new Integer[x]

사용하다

List<Integer> ints = new ArrayList<Integer>();

그런 다음 사용하는 목록을 변경하려면ints.add(y)그리고.ints.remove(z)적절한 자바독에서 찾을 수 있는 많은 편리한 방법 중 하나입니다.

Java에서 제공되는 Collections 클래스는 매우 강력하고 Java 초보자들이 불필요하게 다시 쓰려고 할 정도로 많은 기능을 내장하고 있기 때문에 이를 학습할 것을 강력히 권장합니다.

인스턴스화되면 어레이 크기가 고정됩니다.대신 목록을 사용할 수 있습니다.

자동 상자를 사용하면 목록을 배열과 유사하게 사용할 수 있습니다. 여기에 int-values를 넣을 수 있습니다.

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

이전 답변에 동의하지 않습니다.ArrayList,왜냐면ArrayList는 다이내믹 어레이가 아니라 어레이에 의해 지원되는 목록입니다.차이점은 다음 작업을 수행할 수 없다는 것입니다.

ArrayList list = new ArrayList(4);
list.put(3,"Test");

이 위치에는 아직 요소가 없기 때문에 IndexOutOfBoundsException이 표시됩니다.백킹 배열에서는 이러한 추가가 허용됩니다.따라서 @randy-lance에서 제안하는 커스텀 확장 가능 어레이 구현을 사용해야 합니다.

  1. 작은 크기를 다루려면 목록을 사용하는 것이 좋습니다.

  2. 숫자가 많으면 리스트와 자동박스를 사용하지 마세요.

    리스트 < Integer >리스트

모든 int에 대해 새로운 Integer가 자동으로 생성됩니다.리스트의 사이즈가 커지면, 속도가 느려지는 것을 알 수 있습니다.이러한 정수는 불필요한 객체입니다.이 경우 견적 사이즈를 사용하는 것이 좋습니다.

int[] array = new int[ESTIMATED_SIZE];

'우리'는 어때요?List? 를 들면 면들,?ArrayList<integer>

어레이의 크기는 변경할 수 없습니다.그러나 적절한 크기의 새 배열을 생성하여 이전 배열에서 새 배열로 데이터를 복사할 수 있습니다.

그러나 가장 좋은 방법은 jacarta commons의 IntList를 사용하는 것입니다.(여기서)

리스트와 동일하게 동작하지만 공간도 적게 들고 효율적입니다.이는 래퍼 오브젝트를 int 위에 저장하는 대신 int를 저장하기 때문입니다(Integer 클래스입니다).

언급URL : https://stackoverflow.com/questions/2426671/variable-length-dynamic-arrays-in-java

반응형