JAVA

복습 - 배열

고민말고생각하는사람 2024. 7. 2. 19:02

앞서 기본적인 자료구조인 배열에 대해 학습 하였다.

배열을 복습해보자.

 

배열

관련있는 데이터들은 연속적으로 묶은 기본적인 자료구조이다.

 

배열의 특징과 한계점

1. 배열은 인덱스를 통해 배열에 담긴 값에 빠르게 접근 및 수정할 수 있다. 1회연산 O(1)

공식
배열의 시작 참조값 + (데이터 크기 * 인덱스 위치)

ex)
int[] arr = new int[5_000];
arr[4500]   x100 + (4byte * 4500)  //  x1001800

2. 순서가 보장된다.

3. 배열의 중간간 위치를 수정하기 위한 메서드를 일일이 작성해야 한다.

4. 배열의 처음, 중간에 값을 추가/삭제 하기 위해선 기존 데이터 상당량을 이동시켜야 한다. O(n) (기존 값들이 훼손되거나 불필요한 공간이 남으면 안 되기 때문)

5. 배열을 생성할 때, 길이를 반드시 설정해야 하며, 이는 고정된다.

6. 고정되는 길이로 인해 메모리 낭비가 발생하기 쉽다. 동적인 상황에 대처가 불가하다.

7. 사용량이 많아지면 에러로 이어지고, 사용량이 적어지면 메모리 낭비로 이어진다.

 

이러한 기본적 한계를 극복하기 위해 다양한 자료구조들이 존재한다.

예를 들어,

Collection 의 List, Set, Map 이 그렇다.

 

다음 글에선 배열(Array) 를 사용하는 자료구조인 ArrayList 에 대해 알아보자.