Java 컬렉션 프레임워크 개괄

이현빈·2025년 2월 24일
0

1. 컬렉션 프레임워크란?

컬렉션 프레임워크(Collection Framework) 개요

  • 데이터 군(群)을 저장하는 클래스들을 표준화한 설계
    cf1) 컬렉션 = 데이터 그룹
    cf2) 프레임워크 = 표준화된 프로그래밍 방식

컬렉션 프레임워크의 장점

  • 객체지향적 설계를 바탕으로 다수의 데이터를 저장하기 위한 클래스를 하나의 체계로 일원화하여 재사용성이 높음
  • 다수의 데이터를 다루는 데 필요한 다양한 클래스를 제공하여 기능 구현의 부담을 경감

2. 컬렉션 프레임워크의 핵심 인터페이스

cf) 점선 테두리는 인터페이스, 실선 테두리는 클래스

  • 컬렉션 프레임워크에서는 컬렉션 데이터 그룹을 크게 List, Set, Map의 3가지로 구분
  • List와 Set의 공통 부분은 Collection 인터페이스로 분리
  • Map은 키-값 쌍 형태로 컬렉션을 다룬다는 점으로 인해 Collection 인터페이스의 자손 인터페이스가 아닌 별개의 인터페이스로 취급

Collection 인터페이스

Collection 인터페이스 개요

  • List와 Set의 공통 조상이 되는 인터페이스
    : 컬렉션을 다루는 데 필요한 가장 기본적인 메서드들을 정의
  • 이 외에도 람다, 스트림 관련 메서드들을 포함

Collection 인터페이스의 메서드

cf) List와 Set 인터페이스에 공통으로 정의된 메서드들만 정리
(Collection 인터페이스에 정의된 모든 메서드는 여기에서 확인 가능)

  • boolean add(Object o) / boolean addAll(Collection c)
    : 지정된 객체나 다른 컬렉션의 객체들을 현재 Collection에 추가
  • void clear()
    : Collection의 모든 객체를 삭제
  • boolean contains(Object o) / boolean containsAll(Collection c)
    : 지정된 객체나 Collection의 객체들이 현재 Collection에 포함되었는지를 확인
  • boolean equals(Object o)
    : 동일한 Collection인지를 서로 비교
  • int hashCode()
    : Collection의 해시코드를 반환
  • boolean isEmpty()
    : Collection이 비어 있는지를 확인
  • Iterator iterator()
    : Collection의 Iterator를 얻어서 반환
  • boolean remove(Object o) / boolean removeAll(Collection c)
    : 지정된 객체 또는 지정된 Collection에 포함된 객체들을 현재 Collection에서 삭제
    (차집합과 동일)
  • boolean retainAll(Collection c)
    : 현재 Collection에서 지정된 Collection에 포함된 객체만을 남기고, 이 작업으로 인해 현재 Collection에 변화가 있으면 true, 변화가 없으면 false를 반환
    (교집합과 동일)
  • int size()
    : 현재 Collection에 저장된 객체의 개수를 반환
  • Object[] toArray()
    : 현재 Collection에 저장된 객체를 객체배열로 반환
  • Object[] toArray(Object[] a)
    : 지정된 배열에 현재 Collection에 포함된 객체를 저장해서 반환

List 인터페이스

List 인터페이스 개요

  • 중복을 허용하면서 저장 순서가 유지되는 컬렉션을 구현하기 위해 사용되는 인터페이스
  • 구현 클래스 : ArrayList, LinkedList, Stack, Vector

List 인터페이스에서 추가 정의된 메서드

cf) List 인터페이스에 정의된 모든 메서드는 여기에서 확인 가능

  • void add(int index, Object o) / boolean addAll(int index, Collection c)
    : 지정된 위치에 단일 객체나 컬렉션에 포함된 객체들을 추가
  • Object get(int index)
    : 지정된 위치의 객체를 반환
  • int indexOf(Object o)
    : List의 첫번째 요소부터 순방향으로 탐색하여 지정된 객체의 위치를 반환
  • int lastIndexOf(Object o)
    : List의 마지막 요소부터 역방향으로 탐색하여 지정된 객체의 위치를 반환
  • ListIterator listIterator() / ListIterator listIterator(int index)
    : List의 객체에 접근할 수 있는 ListIterator를 반환
  • Object remove(int index)
    : 지정된 위치에 있는 객체를 삭제하고, 삭제된 객체를 반환
  • Object set(int index, Object element)
    : 지정된 위치에 저장된 객체를 지정된 객체(element)로 변경
  • void sort(Comparator c)
    : 지정된 비교자로 List를 정렬
  • List subList(int fromIndex, int toIndex)
    : 지정된 범위에 있는 객체를 반환

Set 인터페이스

Set 인터페이스 개요

  • 중복을 허용하지 않고 저장순서도 유지되지 않는 컬렉션 클래스를 구현하기 위해 사용되는 인터페이스
  • 구현 클래스 : HashSet, TreeSet 등

cf) Set 인터페이스에서는 Collection 인터페이스에 공통으로 정의된 메서드 중 일부를 활용
(Set 인터페이스에 정의된 모든 메서드는 여기에서 확인 가능)


Map 인터페이스

Map 인터페이스 개요

  • 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하기 위해 사용되는 인터페이스
  • 키는 중복될 수 없으나 값은 중복을 허용
    : 기존에 저장된 키와 중복된 키를 보유하는 키-값 쌍을 저장할 시
    기존 값에 새로운 값 덮어쓰기 수행
  • 저장순서는 유지되지 않음
  • 구현 클래스 : HashTable, HashMap, LinkedHashMap, TreeMap, Properties 등

Map 인터페이스의 주요 메서드

cf) Map 인터페이스에 정의된 모든 메서드는 여기에서 확인 가능

  • void clear()
    : Map에 저장된 모든 key-value 쌍을 삭제
  • boolean containsKey(Object key)
    : 지정된 key 객체와 일치하는 Map의 key 객체가 있는지 확인
  • boolean containsValue(Object value)
    : 지정된 value 객체와 일치하는 Map의 value 객체가 있는지 확인
  • Set entrySet()
    : Map에 저장된 key-value 쌍을 Map.Entry 타입 객체에 대한 Set으로 반환
  • boolean equals(Object o)
    : 동일한 Map인지 비교
  • Object get(Object key)
    : 지정한 key 객체에 대응하는 value 객체를 찾아서 반환
  • int hashCode()
    : Map의 해시코드를 반환
  • boolean isEmpty()
    : Map이 비어 있는지를 확인
  • Set keySet()
    : Map에 저장된 모든 key 객체를 반환
  • Object put(Object key, Object value)
    : 지정한 key 객체에 value 객체를 연결하여 Map에 저장
  • void putAll(Map t)
    : 지정한 Map의 모든 key-value 쌍을 추가
  • Object remove(Object key)
    : 지정한 key 객체와 일치하는 key-value 쌍을 Map에서 삭제
  • int size()
    : Map에 저장된 key-value 쌍의 개수를 반환
  • Collection values()
    : Map에 저장된 모든 value 객체를 반환

Map.Entry 인터페이스

Map.Entry 인터페이스 개요

  • Map에 저장되는 key-value 쌍을 다루기 위해 정의된 내부 인터페이스
  • Map을 구현하는 클래스는 Map.Entry 인터페이스도 필수적으로 구현

Map.Entry 인터페이스의 주요 메서드

  • boolean equals(Object o) : 동일한 Entry인지를 비교

  • Object getKey() : Entry의 key가 되는 객체를 반환

  • Object getValue() : Entry의 value가 되는 객체를 반환

  • int hashCode() : Entry의 해시코드를 반환

  • Object setValue(Object value) : Entry의 value가 되는 객체를 지정한 객체로 변경


3. 컬렉션 클래스 정리 & 요약

컬렉션 클래스 간 관계


컬렉션 클래스별 특징


Reference

  • 자바의 정석(남궁성 지음)

0개의 댓글