EEALL@ONCE

☕ 자바 자료형 - 배열은 개수의 변경이 불가능함 본문

언어💻/자바☕

☕ 자바 자료형 - 배열은 개수의 변경이 불가능함

올엣원스 2023. 8. 3. 19:05
728x90

배열은 개수의 변경이 불가능하다. 왜그럴까?

 

 

🐭 : 

연속된 메모리 할당: 배열은 연속된 메모리 공간에 요소들을 순차적으로 배치합니다. 이러한 구조로 인해 배열의 크기를 변경하려면 새로운 크기의 메모리 공간을 할당하고 기존의 데이터를 새로운 공간으로 복사해야 합니다. 이는 큰 비용이 발생하며, 배열의 크기가 자주 변경된다면 메모리 할당과 데이터 복사로 인한 오버헤드가 크게 증가할 수 있습니다.

 

근데, 그럼... arraylisst도 똑같이 오버헤드가 발생할 수 있는거 아닌가... ?

 

🐭 : 

맞습니다. 두 자료구조 모두 크기가 변경되는 경우에는 새로운 크기의 메모리 공간을 할당하고 기존 데이터를 복사해야 합니다. 이런 점에서 크기 변경에는 비슷한 오버헤드가 발생합니다. 하지만 이 둘을 다른 형태로 설계하는 이유는 다음과 같습니다:

1. 배열 (Array):
   - 배열은 고정 크기의 자료구조이며, 크기가 변경되지 않습니다. 이는 배열이 생성될 때 크기를 정하고 그 크기를 유지해야 하는 제약 때문입니다.
   - 배열의 크기를 불변으로 만드는 것은 배열의 데이터 구조가 정적으로 유지되는 것을 의미합니다. 이러한 특성으로 인해 배열은 크기가 고정되어있는 대신 메모리 상에서 간단하고 빠르게 요소에 접근할 수 있습니다.

2. ArrayList:
   - `ArrayList`는 배열 기반의 동적 배열 자료구조입니다. 크기가 동적으로 조정될 수 있기 때문에 요소의 추가, 삭제가 가능합니다.
   - `ArrayList`는 크기를 동적으로 변경할 수 있어서 배열의 크기 변경에 유연하게 대응할 수 있습니다. 요소를 추가하거나 삭제할 때 자동으로 크기를 조정하여 유연성을 제공합니다.

이렇게 설계된 이유는 각 자료구조의 사용 목적과 특성에 기인합니다. 배열은 크기가 고정되어 있으므로 공간의 효율적인 사용과 요소에 빠르게 접근해야 하는 경우에 유용합니다. 반면에 `ArrayList`는 크기가 동적으로 조정되기 때문에 크기가 자주 변해야 하는 상황에서 유용하며, 동적인 데이터 관리를 위해 사용됩니다.

데이터 구조의 설계는 사용 목적과 성능 요구사항에 따라 다르게 이뤄져야 하며, 어떤 자료구조를 선택할지는 프로그램의 특성과 요구사항을 고려하여 결정하는 것이 중요합니다.

 

 

728x90