배열
- 인덱스와 값을 일대일 대응해 관리하는 자료구조
- 데이터를 저장할 수 있는 모든 공간은 인덱스와 일대일 대응
- 어떤 위치에 있는 데이터든 한 번에 접근 가능
ArrayList
- 크기가 동적으로 변하는 배열
- ArrayList의 생성자의 맥변수로 컬렉션을 넘기면, 매개변수로 넘긴 컬렉션에 담긴 데이터로 초기화 할 수 있음
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
ArrayList<Integer> list2 = new ArrayList<>();
//list2 : [1,2,3]
| 정의 | 설명 |
|---|
| add(n) | 리스트의 맨 끝에 데이터 추가 |
| get(n) | 특정 인덱스에 있는 데이터에 접근 |
| remove(n) | 특정 위치의 데이터 삭제. 데이터를 삭제하는 위치에 따라 데이터를 복사하는 연산이 필요해 시간 복잡도가 O(n)까지 증가할 수 있음 |
고려할 점
할당할 수 있는 메모리 크기
- 배열은 표현하려는 데이터가 너무 많으면 배열 할당에 실패함
- 보통 정수형 1차원 배열은 1000만개, 2차원 배열은 3000*3000을 최대로 생각함
중간에 데이터 삽입이 많은지 확인
- 배열은 선형 자료구조 -> 중간이나 처음에 데이터를 삽입하면 시간 복잡도가 높아짐
데이터에 자주 접근하거나 읽어야 하는지 확인
- 배열은 임의 접근을 통해 인덱스에 바로 접근할 수 있어 데이터에 빈번하게 접근하는 경우 효율적임