ArrayList
ArrayList는 컬렉션 클래스 중 가장 널리 사용되는 자료 구조 중 하나이다.
ArrayList는 Collection 인터페이스의 하위 클래스인 List 인터페이스를 구현한 클래스로, 데이터의 저장 순서를 유지하고 중복을 허용하는 특징을 가지며, 이는 List 인터페이스의 설계 원칙을 따른 것이다.
ArrayList는 내부적으로 데이터를 순차적으로 저장하기 위해서 Object 배열을 사용하며, 동적 크기 배열을 구현한 클래스이다. 이 동적 크기 조절 기능은 데이터 추가 및 제거를 훨씬 간단하게 만들어준다.
ArrayList의 활용과 제공 메서드
ArrayList<> list = new ArrayList<>(); // ArrayList 선언
list.add("첫 번째 요소"); // ArrayList 요소 추가
list.get(0); // 0번 째 인덱스의 요소를 가져온다.
list.set(0, "첫 번째 요소 수정"); // 0번 째 인덱스의 요소를 수정한다.
list.remove(0); // 0번 째 인덱스의 요소를 제거한다.
list.size(); // ArrayList의 크기를 반환한다.
list.isEmpty(); // ArrayList가 비어 있는지 boolean형태로 반환
ArrayList의 메서드
ArrayList와 배열의 차이점
배열은 선언할 때 크기를 미리 지정해야 하며, 크기를 변경하려면 새 배열을 생성하고 데이터를 복사하는 번거로운 작업이 필요하다. 또한, 배열의 크기가 고정되기 때문에 메모리 효율성이 떨어질 수 있는 단점이 있다.
반면, ArrayList는 내부적으로 크기를 동적으로 조절할 수 있어 요소 추가 및 제거가 훨씬 더 간단하다. 따라서 필요한 크기에 따라 동적으로 조절되므로 메모리 관리가 배열보다 효율적으로 이루어질 수 있다.
ArrayList의 단점
ArrayList는 크기를 동적으로 조절할 수 있어 편리하지만, 요소를 빈번하게 추가 또는 제거해야 하는 상황에서는 성능적으로 적합하지 않을 수 있다.
특히, ArrayList에서 중간에 요소를 추가하거나 제거할 때, 해당 위치 이후의 모든 요소를 이동해야 하는 번거로운 작업이 필요하다. 이로 인해 추가적인 연산 비용과 시간이 소요되며, ArrayList의 크기가 커질수록 성능이 저하될 수 있다.
또한, ArrayList는 내부 배열을 관리하기 위해 추가적인 메모리를 사용한다. 동적 크기 조절을 위해 여분의 메모리를 확보하는데, 이로 인해 불필요한 메모리 소비가 발생할 수 있다.
따라서, 대량의 데이터를 다룰 때는 ArrayList의 요소 간 이동이 성능에 부정적인 영향을 미칠 수 있으므로, 데이터 구조를 선택할 때 주의가 필요하며, 요소를 빈번하게 추가 또는 제거해야 할 경우 LinkedList와 같은 자료 구조를 고려하는 것이 좋다.
'Java > 컬렉션 프레임워크' 카테고리의 다른 글
Set 컬렉션 - TreeSet(개념) (0) | 2023.09.06 |
---|---|
List 컬렉션, LinkedList (2) | 2023.09.03 |
List, Set, Map 인터페이스 (0) | 2023.08.27 |
컬렉션 프레임워크 (0) | 2023.08.27 |