티스토리 뷰

Language/Java

[Java] Collection Framework

DUCKBAE's 2022. 11. 27. 20:34

컬렉션이란 오라클에서 다음과 같이 정의해 놓았다.

A collection is an object that represents a group of objects

 

즉, 객체들의 집단을 대표하는 객체라고 한다. (객체를 모아둔 자료구조라고 생각하자)

.

그럼 컬렉션 프레임워크란 무엇일까?

컬렉션을 표현하고 조작하기 위한 통합 아키텍쳐로, 다양한 데이터 구조 및 알고리즘을 구현하기 위한 인터페이스 및 클래스를 제공한다.

 

장점

Reduces programming effort

우리는 컬렉션의 디자인에 대해 걱정하기보다 프로그램에서 컬렉션을 잘 사용하는 방법에 대해 집중할 수 있다.

 

Increases program speed and quality

데이터 구조 및 알고리즘의 고성능 구현을 제공한다.

 

더 많은 장점은 oracle 에서 확인해보자.

 

 

Hierarchy of the Collection Framwork

https://en.wikipedia.org/wiki/Java_collections_framework#/media/File:Java.util.Collection_hierarchy.svg

Iterable Interface

전체 컬렉션의 루트 인터페이스이다.

컬렉션 인터페이스는 Iterable Interface를 구현하였다.

* Collection 인터페이스를 보면 아래와 같이 되어있음을 알 수 있다.

public interface Collection<E> extends Iterable<E> {
}

해당 인터페이스는 iterator 를 제공한다.

* Iterable 인터페이스를 보면 아래와 같이 iterator 함수가 있는 것을 확인 할 수 있다.

public interface Iterable<T> {
    /**
     * Returns an iterator over elements of type {@code T}.
     *
     * @return an Iterator.
     */
    Iterator<T> iterator();
}

 

Collection Interface

컬렉션에 데이터를 추가, 삭제, 지우기 등과 같이 기본 메서드를 포함한다.

 

List Interface

특정 순서가 있으며, 중복 데이터를 허용한다.

ArraysList, LinkedList, Vector, Stack 과 같은 클래스에 의해 구현되어 있다.

 

Queue Interface

FIFO (First In First Out), 삽입된 순서대로 데이터를 저장하는 구조이다.

LinkedList, PriorityQueue, ArrayDequeue 와 같은 클래스에 의해 구현되어 있다.

* LinkedList는 List 도 구현할 수 있지만, Queue 로 사용할 수 있는 메서드도 있다.

 

Deque(Double-ended queue) Interface

Queue Interface 를 상속받은 인터페이스이다.

양방향 대기열인 이 인터페이스는 큐 양쪽 끝에서 데이터를 추가하고 제거할 수 있는 구조이다.

LinkedList, ArrayDeque 와 같은 클래스에 의해 구현되어 있다.

 

Set Interface

중복된 값을 저장하지 않고, 정렬되지 않으며 인덱스로 데이터를 찾지 않는 구조이다.

HashSet, TreeSet, LinkedHashSet 과 같은 클래스에 의해 구현되어 있다.

https://en.wikipedia.org/wiki/Java_collections_framework#/media/File:Java.util.Map_hierarchy.svg

Map Interface

데이터를 key, value 로 저장하는 구조이다.

동일한 키가 여러 매핑을 가질 수 없기 때문에 중복 키를 허용하지 않는다.

HashMap, TreeMap 과 같은 클래스에 의해 구현되어 있다.

 

위 내용을 보면, Map 인터페이스는 Collection 상속 계층도에 포함되지 않는 것을 알 수 있다.

그 이유는 Collection 인터페이스를 상속받는 인터페이스 및 클래스들은 서로 많은 공통 부분이 있어서, 공통된 부분을 뽑아 Collection 인터페이스를 정의할 수 있었지만 Map 인터페이스는 이들과 전혀 다른 형태로 컬렉션을 다루기 때문이다.

 

참고

https://www.geeksforgeeks.org/collections-in-java-2/

https://en.wikipedia.org/wiki/Java_collections_framework

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

이넘(Enum)  (0) 2024.10.16
배열에서 메모리 접근  (0) 2024.10.15
[Java] Exception  (0) 2022.11.10
[Java] Thread  (0) 2022.06.28
[Java] Stack & Queue  (0) 2022.06.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함