[IT 기술 면접] Java의 Collection Framework 이란?
by 무작정 개발
이번에는 Java의 Collection에 대해 정리할 것이다.
▶ Collection Framework (JCF)
Java에서 Collection 이란 데이터의 집합, 그룹을 의미하며
JCF(Java Collections Framework)는 객체들을 한 곳에 모아 관리하고, 편하게 사용하기 위해 제공되는 환경이고,
데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.
- Collection에는 List, Map, Set, Stack, Queue와 같은 것들이 있다.
※ 왜 Collection을 사용하는 것일까?
- 그 이유는 다수의 Data(데이터)를 다루는데 표준화된 클래스들을 제공해주기 때문에 DataStructure(자료구조)를 직접 구현하지 않고 편하게 사용할 수 있기 때문이다.
- 또한 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다.
- → 이는 프로그램의 공간적인 효율성을 높여준다.
▶ Java Collection Framework(JCF) 상속 구조
Collection 인터페이스는 크게 List, Set, Queue(큐)로 크게 3가지 상위 인터페이스로 분류할 수 있다.
그리고 Map은 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다.
▶ List
List 인터페이스를 직접 @Override(오버라이드)를 통해 사용자가 정의하여 사용할 수도 있으며,
대표적인 구현체로는 ArrayList와 LinkedList가 있다.
※ 순서가 있는 데이터의 집합으로 데이터의 중복을 허용
○ ArrayList
Java의 Vector를 개선한, 배열로 구현된 List이다. 즉, 데이터가 저장된 순서가 같다는 뜻이다.
사실상 배열과 같은 자료구조이기 때문에, List의 연산 자체의 수행 시간 속도는 배열과 같다.
- 단방향 포인터 구조로 각 데이터에 대한 인덱스(Index)를 가지고 있어 조회 기능에 성능이 뛰어남
○ LinkedList
다음 노드의 주소를 기억하고 있는 List로, 배열에 비해 삽입과 삭제가 간단하다.
하지만, 탐색(검색)의 경우 첫 번째 노드부터 탐색하기 때문에 속도가 느리다.
- 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용하다.
- Stack(스택), Queue(큐), 양방향 큐 등을 만들기 위한 용도로 쓰임
▶ Map
대표적인 구현체로 HashMape이 존재한다.
Key(키) - Value(값)의 쌍으로 이루어진 데이터의 집합으로, 데이터 순서를 보장하지 않으며
key(키)의 중복을 허용하지 않으나 Value(값)의 중복은 허용한다.
※ key에 대한 순서를 보장하기 위해서는 LinkedHashMap 을 사용
○ HashMap
가장 일반적으로 사용하는 Map이다.
Key값에 해시 함수를 적용하여 나온 Index에 Value를 저장하는데, 중복과 순서가 허용되지 않으며 null값이 올 수 있다.
○ HashTable
HashMap보다는 느리지만 동기화를 지원한다.
HashMap과 다른 점은 Key값 혹은 Value값에 null을 넣으면 컴파일 에러 발생
○ TreeMap
Red-Black Tree 자료구조를 이용한 Map이다.
Tree(트리) 구조이기에 어느 정도 순서를 보장한다.
정렬된 순서대로 Key, Value를 저장하여 검색이 빠르다.
▶ Set
대표적인 구현체로 HashSet이 존재한다.
value(값)에 대해서 중복된 값을 저장하지 않는다. 사실 Set 자료구조는 Map의 key-value 구조에서
key 대신 value가 들어가 value를 key로 하는 자료구조일 뿐이다.
Map과 같이 Set도 순서를 보장하지 않으며 순서를 보장하기 위해서는 LinkedHashSet를 사용한다.
※ 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
○ HashSet
HashMap에서 Key값이 없는 자료형 집합이라고 생각해도 무방하다.
value(값)이 포함되어 있는지 아닌지만 관심이 있다. 순서를 보장하지 않으며, 중복 값을 허용하지 않는다.
가장 빠른 임의 접근 속도이고, 순서를 예측할 수 없다.
○ TreeSet
Red-Black Tree 자료구조를 사용한 Set이다.
정렬 방법을 지정할 수 있다.
▶ Stack & Queue (스택, 큐)
○ Stack
직접 new 연산자로 객체를 생성하여 사용 가능
○ Queue
LinkedList에 new 연산자로 객체를 생성함으로써 사용 가능
▶ Collection 인터페이스의 특징 (요약)
인터페이스 | 구현 클래스 | 특징 |
Set | HashSet TreeSet |
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. |
List | LinkedList Vector ArrayList |
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. |
Map | HashMap HashTable TreeMap |
Key(키) - Value(값)의 쌍으로 이루어진 데이터의 집합으로, 순서는 유지되지 않으며 key(키)의 중복을 허용하지 않으나 value(값)의 중복은 허용한다. |
Queue | LinkedList PriorityQueue |
List와 유사 |
[출처 및 참고 문헌]
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Java#collection
'CS 지식 & 기술면접 > 기술 면접 정리' 카테고리의 다른 글
신입 백엔드 개발자 기술 면접 핵심 정리 - Java (3) | 2023.01.09 |
---|---|
[기술 면접] 신입 백엔드 기술 면접 질문 정리 및 답변 (2) | 2022.07.12 |
[기술 면접 후기] 가장 인상 깊었던 3번째 기술 면접 및 질문 정리 (1) | 2022.06.03 |
[IT 기술 면접] JVM (자바 가상 머신) 이란? (0) | 2022.05.30 |
[IT 기술 면접] OOP(객체 지향 프로그래밍) 이란? (0) | 2022.05.30 |
블로그의 정보
무작정 개발
무작정 개발