수업에서 조사한 자료를 정리한 글입니다.
자바 컬렉션 프레임워크(Java Collection Framework)는 자바에서 데이터를 저장하고 관리하는데 사용되는 구조들을 표준화하고 제공하는 라이브러리입니다. 이를 통해 자바 개발자들은 더 쉽게, 더 효율적으로 데이터를 다룰 수 있습니다.
컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다.
List
인터페이스
Set
인터페이스
Map
인터페이스
이 외에도 Queue
, Deque
, SortedSet
, SortedMap
등의 인터페이스와 그들의 구현체들이 있습니다.
List
인터페이스는 순서가 있는 데이터의 집합을 관리하는데 사용됩니다. 데이터를 중복해서 저장할 수 있습니다. 대표적인 구현체로는 ArrayList
와 LinkedList
가 있습니다. ArrayList
는 내부적으로 배열을 사용하여 데이터를 저장합니다. 데이터 접근 속도가 빠르지만, 데이터 삽입, 삭제 속도는 느립니다. LinkedList
는 내부적으로 링크드 리스트를 사용하여 데이터를 저장합니다. 데이터 삽입, 삭제 속도는 빠르지만, 데이터 접근 속도는 느립니다.
Set
인터페이스는 순서가 없는 데이터의 집합을 관리하는데 사용됩니다. 데이터를 중복해서 저장할 수 없습니다. 대표적인 구현체로는 HashSet
, TreeSet
이 있습니다. HashSet
은 내부적으로 해시 테이블을 사용하여 데이터를 저장합니다. 데이터 접근 속도가 빠르지만, 데이터 순서가 무작위로 정렬됩니다. TreeSet
은 내부적으로 이진 검색 트리를 사용하여 데이터를 저장합니다. 데이터 접근 속도는 느리지만, 데이터가 정렬되어 저장됩니다.
Map
인터페이스는 키-값 쌍으로 이루어진 데이터의 집합을 관리하는데 사용됩니다. 키는 중복될 수 없지만, 값은 중복될 수 있습니다. 대표적인 구현체로는 HashMap
, TreeMap
이 있습니다. HashMap
은 내부적으로 해시 테이블을 사용하여 데이터를 저장합니다. 키를 이용해 데이터에 접근하므로 데이터 접근 속도가 빠릅니다. TreeMap
은 내부적으로 이진 검색 트리를 사용하여 데이터를 저장합니다. 데이터 접근 속도는 느리지만, 키를 기준으로 데이터가 정렬되어 저장됩니다.
간단한 활용 예시를 보겠습니다.
import java.util.ArrayList;
public class CollectionExam {
public static void main(String[] args) {
// 리스트 생성
ArrayList<String> vehicles = new ArrayList<String>();
// 리스트에 요소를 저장
vehicles.add("bus");
vehicles.add("train");
vehicles.add("taxi");
vehicles.add("bycicle");
// 리스트에 요소를 삭제
vehicles.remove("bycicle");
// 리스트 요소의 출력
for (String vehicle : vehicles) {
System.out.println(vehicle);
}
}
}
// 실행 결과
// bus
// train
// taxi
자바 컬렉션 프레임워크는 다양한 알고리즘과 자료구조를 사용하여 구현되어 있습니다. 이를 통해 개발자들은 효율적으로 데이터를 다룰 수 있습니다. 또한, 자바 컬렉션 프레임워크는 제네릭을 사용하여 타입 안정성을 보장합니다. 이를 통해 개발자들은 컴파일 타임에 타입 관련 오류를 방지할 수 있습니다.
마지막으로, 자바 컬렉션 프레임워크는 다른 라이브러리와의 호환성이 좋습니다. 이를 통해 다른 라이브러리들과 함께 자유롭게 사용할 수 있습니다.