자바 컬렉션 프레임워크에 대해 알아보자

세바님·2023년 3월 28일
0
post-thumbnail

수업에서 조사한 자료를 정리한 글입니다.

자바 컬렉션 프레임워크(Java collection framework) 란?

자바 컬렉션 프레임워크(Java Collection Framework)는 자바에서 데이터를 저장하고 관리하는데 사용되는 구조들을 표준화하고 제공하는 라이브러리입니다. 이를 통해 자바 개발자들은 더 쉽게, 더 효율적으로 데이터를 다룰 수 있습니다.

컬렉션 프레임워크 주요 인터페이스

컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다.

  1. List 인터페이스

  2. Set 인터페이스

  3. Map 인터페이스

이 외에도 Queue , Deque , SortedSet , SortedMap 등의 인터페이스와 그들의 구현체들이 있습니다.

List 인터페이스

List 인터페이스는 순서가 있는 데이터의 집합을 관리하는데 사용됩니다. 데이터를 중복해서 저장할 수 있습니다. 대표적인 구현체로는 ArrayListLinkedList 가 있습니다. ArrayList 는 내부적으로 배열을 사용하여 데이터를 저장합니다. 데이터 접근 속도가 빠르지만, 데이터 삽입, 삭제 속도는 느립니다. LinkedList 는 내부적으로 링크드 리스트를 사용하여 데이터를 저장합니다. 데이터 삽입, 삭제 속도는 빠르지만, 데이터 접근 속도는 느립니다.

Set 인터페이스

Set 인터페이스는 순서가 없는 데이터의 집합을 관리하는데 사용됩니다. 데이터를 중복해서 저장할 수 없습니다. 대표적인 구현체로는 HashSet , TreeSet 이 있습니다. HashSet 은 내부적으로 해시 테이블을 사용하여 데이터를 저장합니다. 데이터 접근 속도가 빠르지만, 데이터 순서가 무작위로 정렬됩니다. TreeSet 은 내부적으로 이진 검색 트리를 사용하여 데이터를 저장합니다. 데이터 접근 속도는 느리지만, 데이터가 정렬되어 저장됩니다.

Map 인터페이스

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

마무리

자바 컬렉션 프레임워크는 다양한 알고리즘과 자료구조를 사용하여 구현되어 있습니다. 이를 통해 개발자들은 효율적으로 데이터를 다룰 수 있습니다. 또한, 자바 컬렉션 프레임워크는 제네릭을 사용하여 타입 안정성을 보장합니다. 이를 통해 개발자들은 컴파일 타임에 타입 관련 오류를 방지할 수 있습니다.

마지막으로, 자바 컬렉션 프레임워크는 다른 라이브러리와의 호환성이 좋습니다. 이를 통해 다른 라이브러리들과 함께 자유롭게 사용할 수 있습니다.

profile
아아

0개의 댓글