Frinee의 코드저장소

[Java] 컬렉션 프레임워크(Collections Framework)

by Frinee
컬렉션 프레임워크(Collections Framework)
: 데이터 군을 저장하는 클래스들을 표준화한 설계를 뜻함. 컬렉션(Collection)은 다수의 데이터, 즉 데이터 그룹을, 프레임워크(Framework)는 표준화된 프로그래밍 방식을 말함.

 

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

인터페이스 특징
List 순서가 있는 데이터의 집합. 데이터의 중복을 허용함.
ex) ArrayList, LinkedList, Stack, Vector 등
Set 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다.
ex) HashSet, TreeSet 등
Map 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
예) 우편번호, 지역번호(전화번호)
ex) HashMap, TreeMap, Hashtable, Properties 등
  • 컬렉션 프레임워크의 모든 컬렉션 클래스들은 List, Set, Map 중 하나를 구현하고 있음

1.1. Collection 인터페이스

  • List와 Set의 조상인 Collection 인터페이스에는 다음과 같은 메서드들이 정의됨.
메서드 설명
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들을 Collection에 추가한다.
void Clear() Collection의 모든 객체를 삭제한다.
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 객체(o) 또는 Collection(c)의 객체들이 Collection에 포함되어 있는지 확인한다.
boolean equals(Object o) 동일한 Collection인지 비교한다.
int hashCode() Collection의 hash code를 반환한다.
boolean isEmpty() Collection이 비어있는지 확인한다.
Iterator iterator() Collection의 Iterator를 얻어서 반환한다.
boolean remove(Object o) 지정된 객체를 삭제한다.
boolean removeAll(Collection c) 지정된 Collection에 포함된 객체들을 삭제한다.
int size() Collection에 저장된 객체의 개수를 반환한다.
Object[] toArray() Collection에 저장된 객체를 객체배열(Object[])로 반환한다.
Object[] toArray(Object[] a) 지정된 배열에 Collection의 객체를 저장해서 반환한다.

 

1.2. List 인터페이스

  • List 인터페이스는 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용.
메서드 설명 
void add(int index, Object element)
boolean addAll(int index,Collection c)
지정된 위치(index)에 객체(element) 또는 컬렉션에 포함된 객체들을 추가한다.
Object get(int index) 지정된 위치(index)에 있는 객체를 반환한다.
int indexOf(Object o) 지정된 객체의 위치(index)를 반환한다.
(List의 첫번째 요소로부터 순방향으로 찾는다.)
int lastIndexOf(Object o) 지정된 객체의 위치(index)를 반환한다.
(List의 마지막 요소로부터 역방향으로 찾는다.)
ListIterator listIterator()
ListIterator listIterator(int index)
List의 객체에 접근할 수 있는 Iterator를 반환한다.
Object remove(int index) 지정된 위치(index)에 있는 객체를 삭제하고 삭제된 객체를 반환한다.
void sort(Comparator c) 지정된 비교자(Comparator)로 List를 정렬한다.
List subList(int fromIndex,
int toIndex)
지정된 범위(fromIndex, toIndex)에 있는 객체를 반환한다.

 

1.3. Set 인터페이스

  • Set 인터페이스는 중복을 허용하지 않고 저장순서가 유지되지 ㅇ낳는 컬렉션 클래스를 구현하는 데 사용.
  • Set 인터페이스를 구현한 클래스로는 HashSet, TreeSet 등이 있음.

1.4. Map 인터페이스

  • Map 인터페이스는 키와 값을 하나의 쌍으로 묶어 저장하는 컬렉션 클래스를 구현하는 데 사용
  • 키는 중복될 수 없지만 값은 중복을 허용함.
  • 기존에 저장된 데이터와 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남게 됨.
메서드 설명
void clear() Map의 모든 객체를 삭제한다.
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() 해시코드를 반환한다.
boolean isEmpty() Map이 비어있는지 확인한다.
Set keySet() Map에 저장된 모든 key객체를 반환한다.
Objcect put(Object key, Object value) Map에 value객체를 key객체에 연결하여 저장한다.
void putAll(Map t) 지정된 Map의 모든 key-value쌍을 추가한다.
Object remove(Object key) 지정한 key객체와 일치하는 key-value객체를 삭제한다.
int size() Map에 저장된 key-value쌍의 개수를 반환한다.
Collection values() Map에 저장된 모든 value객체를 반환한다.
  • Map.Entry인터페이스는 Map에 저장되어 있는 key-value 쌍을 다루기 위해 내부적으로 정의한 인터페이스이다.

 

2. 컬렉션 프레임워크의 종류

2.1. ArrayList

  • 컬렉션 프레임워크에서 가장 많이 사용하는 컬렉션 클래스
  • 데이터의 저장순서가 유지

2.2. LinkedList

  • 배열의 가장 기본적인 형태의 자료구조
  • 구조가 간단하며 사용하기 쉽고 데이터를 읽어오는데 걸리는 시간이 가장 빠름
  • 크기를 변경할 수 없고 비순차적인 데이터 추가 혹은 삭제에 시간이 많이 걸림
  • 각 요소는 다음 요소에 대한 참조값과 데이터로 구성됨.

2.3. Stack & Queue

  • 스택(Stack)
    • 스택(Stack)은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO 구조
    • 스택은 ArrayList 기반 배열기반 컬렉션 클래스가 적합함.
  • 큐(Queue)
    • 큐(Queue)는 처음에 저장한 데이터를 가장 먼저 꺼내는 FIFO 구조
    • 큐는 데이터 추가/삭제가 쉬운 LinkedList로 구현하는 것이 더 적합함.

2.4. HashSet

  • Set인터페이스를 구현한 가장 대표적인 컬렉션
  • 중복된 요소를 저장하지 않는 특징

2.5. TreeSet

  • 이진 검색 트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 데이터 컬렉션 클래스
  • 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지 않음

2.6. HashMap

  • Map의 특징, 키(key)와 값(value)을 묶어서 하나의 데이터로 저장하는 특징을 가짐.
  • 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어 뛰어난 성능을 보임.

2.7. TreeMap

  • 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장함.
  • 검색과 정렬에 적합한 컬렉션 클래스
  • 특히, HashMap과 비교했을 때 범위검색이나 정렬이 필요한 경우 성능이 더 좋음.

2.8. Properties

  • HashMap의 구버전인 HashTable을 상속받아 구현한 것으로, (String, String)의 형태로 저장하는 보다 단순화된 컬렉션 클래스
  • 주로 애플리케이션의 환경설정과 관련된 속성을 저장하는데 사용
  • 데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공함.

'Backend > Java' 카테고리의 다른 글

[Java] Generics, Enum, Annotation  (1) 2025.02.18
[Java] 예외 처리(exception handling)  (0) 2025.02.11
[Java] 객체지향 프로그래밍 (OOP)  (0) 2025.01.27
자바 기본 구조와 기본 문법  (0) 2025.01.18

블로그의 정보

프리니의 코드저장소

Frinee

활동하기