[Java] Collection Framework
Published:
In this post, concept of Collection Framework is introduced.
Collection Framework
자바 컬렉션 프레임워크(Java Collection Framework, JCF)는 데이터를 저장하고 관리하기 위한 표준화된 클래스와 인터페이스 집합이다. 배열처럼 단순한 구조보다 더 다양한 기능(동적 크기 조정, 정렬, 탐색, 중복 허용 여부 등)을 제공하며, 자바에서 자료구조를 다룰 때 사실상 기본 도구로 사용된다.
java.util 패키지에 포함되어 있다.
List
List<E> 는 인터페이스이다. 아래의 주요 메서드를 구현해야 한다.
boolean add(E e) // 요소 추가
void add(int index, E e) // 특정 위치에 요소 삽입
E get(int index) // 인덱스로 요소 가져오기
E set(int index, E e) // 인덱스 위치의 요소 수정
E remove(int index) // 인덱스 위치 요소 삭제
boolean remove(Object o) // 특정 객체 삭제
int size() // 리스트 크기
boolean contains(Object o) // 요소 존재 여부
ArrayList class
배열 기반 동적 리스트이다. 배열 기반인데 동적이라는 의미가 다소 의아하게 느껴질 수 있다.
Java 에서 일반 배열은 한 번 크기를 정하고 바꿀 수 없다. 하지만
ArrayList는 초기 용량 10으로 시작하여 꽉 차면 자동으로 더 큰 배열을 새로 만들고, 기존 데이터를 복사해 넣는다.Generic 을 사용한다.
List<String> arrList = new ArrayList<>();이렇게 하면 컴파일러가 다음과 같은 동작을 막아준다.
List<String> list = new ArrayList<>(); list.add("hello"); // list.add(100); // 컴파일 에러, 제네릭 덕분에 String만 허용 String s = list.get(0); // 자동으로 String 반환, 캐스팅 필요 없음사용 예시
List<String> arrList = new ArrayList<>(); arrList.add("A"); arrList.add("B"); arrList.add(1, "X"); // 중간 삽입 System.out.println(arrList); // [A, X, B]랜덤 접근($O(1)$) 빠름. 삽입/삭제는 느림 (중간 원소 이동 필요 → $O(n)$).
LinkedList class
이중 연결 리스트 기반. 삽입/삭제 $O(1)$ (노드 연결만 바꾸면 됨). 랜덤 접근 $O(n)$ → 인덱스 접근 느림.
사용 예시
List<String> linkList = new LinkedList<>(); linkList.add("A"); linkList.add("B"); linkList.addFirst("X"); // LinkedList만 지원 System.out.println(linkList); // [X, A, B]

Leave a Comment