개발놀이터

자바 List 컬렉션 클래스 본문

Java

자바 List 컬렉션 클래스

마늘냄새폴폴 2021. 8. 9. 04:56

*List 컬렉션 클래스
List 인터페이스를 구현한 모든 List 컬렉션 클래스는 다음과 같은 특징을 가진다.

1. 요소의 저장 순서가 유지된다.
2. 같은 요소의 중복 저장을 허용한다.

대표적인 List 컬렉션 클래스에 속하는 클래스는 다음과 같다.

1. ArrayList<E>
2. LinkedList<E>
3. Vector<E>
4. Stack<E>


*ArrayList<E> 클래스
ArrayList클래스는 가장 많이 사용되는 컬렉션 클래스 중 하나이다.
JDK 1.2 부터 제공된 ArrayList 클래스는 내부적으로 배열을 이용하여 요소를 저장한다.

ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있다.
하지만 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야하는 복잡한 과정을 거쳐야 한다.
물론 이 과정은 자동으로 수행되지만, 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어지는 단점을 가지게 된다.


*LinkedList<E> 클래스
LinkedList 클래스는 ArrayList 클래스가 배열을 이용하여 요소를 저장함으로써 발생하는 단점을 극복하기 위해 고안되었다. JDK 1.2 부터 제공된 LinkedList 클래스는 내부적으로 연결리스트를 이용하여 요소를 저장한다.

배열은 저장된 요소가 순차적으로 저장된다.
하지만 연결 리스트는 저장된 요소가 비순차적으로 분포되며, 이러한 요소들 사이를 링크로 연결하여 구성하낟.
다음 요소를 가리키는 참조만을 가지는 연결 리스트를 단일 연결리스트라고 한다.


이러한 단일 연결 리스트는 요소의 저장과 삭제 작업이 다음 요소를 가리키는 참조만 변경해주면 되므로, 아주 빠르게 처리될 수 있다.
하지만 단일 연결 리스트는 현재 요소에서 이전 요소로 접근하기가 매우 어렵다.

따라서 이전 요소를 가리키는 참조도 가지는 이중 연결 리스트가 좀 더 많이 사용된다.


LinkedList 클래스도 위와 같은 이중 연결리스트를 내부적으로 구현한 것이다.
또한, LinkedList 클래스 역시 List 인터페이스를 구현하므로, ArrayLIst 클래스와 사용할 수 잇는 메소드가 거의 같다.

'Java' 카테고리의 다른 글

자바 Map컬렉션 클래스  (0) 2021.08.10
자바 Stack 과 Queue  (0) 2021.08.09
자바 제네릭  (0) 2021.08.09
자바 인터페이스  (0) 2021.08.09
자바 추상클래스  (0) 2021.08.09