본문 바로가기
백엔드/자바

Java Collection Framework (1)

by _최우석 2023. 3. 6.

Java Collection Framework란?

Collection 이란?

A collection is an object that represents a group of objects (from oracle java document)
In Java, a Collection is a group of multiple objects put together into a single unit. (from geekforgeeks)

collection이란 오브젝트를 모아둔 것이라 생각하면 된다. 그렇다면 어떤 기준으로 오브젝트를 선별해서 모아둔 것일까?

마구잡이로 모든 객체를 모아두진 않았을 것이다. 여기서 그 기준에 대해서 생각해보면 진정으로 Java Collection Framework의 용도에 대해서 이해할 수 있다. 기준은 바로 자료구조에서 흔히 배우는 자료구조들이다. 그래서 Java Collection Framework 안에는 알고리즘과 자료구조에서 흔히 볼 수 있는 자료구조들이 들어있다.

Framework 란?

It 용어가 대부분 그렇듯 명확한 정의는 찾기 어렵다. 다만, Frame(뼈대) + work(작동) 이란 식으로 단어를 이해하는 것이 좋은 듯 하다.

그리고 이 뼈대란 것은 해당 framework를 사용한 사람들이 모두 공유하는 것이다. 그렇기 때문에 표준이라 생각할 수 있다. 그리고 java collection framework에선 framework를 표준이라 이해하는 것이 좋다. 왜냐하면 JDK 1.2 이전에 제공되었던 Vector, Properties, Stack, Hash Tables, Dictionary 같은 것들이 제공되었는데 이 오브젝트들에는 통일성이 없고, 표준화된 인터페이스가 없었기 때문이다.

Java Collection Framework란?

 A collections framework is a unified architecture for representing and manipulating collections, enabling collections to be manipulated independently of implementation details. (from oracle)

위와 같은 정의를 오라클 자바 문서에서 JCF의 정의를 찾을 수 있다. 그러나 너무나 추상적이다. 그렇기 때문에 실제로 코드로 어떻게 구현이 되어 있는지 파악해야 한다.

 

GeeksforGeeks
GeeksforGeeks

위에서 확인할 수 있듯이 JCF는 인터페이스, 클래스(구현체), 알고리즘으로 구성되어 있다. 알고리즘은 컬렉션이 제공하는 메소드라고 생각하면 된다. 여기서 중요한 핵심 컬렉션 프레임워크는 List, Queue, Set, Map이다. 그런데 Map은 살짝 특이하다. 왜냐하면 iterable 인터페이스를 상속 받지 않았기 때문이다. 이에 대해서 오라클 공식 문서에서는 아래와 같이 서술하고 있다.

The other collection interfaces are based on java.util.Map and are not true collections. However, these interfaces contain collection-view operations, which enable them to be manipulated as collections.

map은 사실 collection이 아니다. 그러나 collection 처럼 보일 수 있는 연산들을 포함하고 있다.

 

다음 포스트에서는 각각의 인터페이스들을 deep dive 해보겠다.