JAVA BASIC/Collection(컬렉션) - 자료구조

01. [자바] 컬렉션 프레임워크(Collections Framework)

Wings of Freedom 2023. 9. 14. 18:44

컬렉션 프레임워크란?

다수의 데이터를 다루는 데 필요한 배열과 비슷하지만 더 성능이 뛰어난 많은 클래스들을 제공한다
크게 3가지 그룹이 있는데 List, Set, Map이다.

 

 

컬렉션 프레임워크의 인터페이스간 상속계층도

계층도와 같이 Map인터페이스는 상속계층도에 포함되지 않는다, 전혀 다른 형태로 컬렉션을 다루기 때문이다.

인터페이스 특 징
List 데이터의 중복을 허용하는 순서가 있는 데이터의 집합. 
클래스 : ArrayList, LinkedList, Stack, Vactor 
Set 데이터의 중복을 허용하지 않고 순서를 유지하지 않는 데이터의 집합.
클래스 : HashSet, TreeSet 등
Map 키(key)와 값(value)로 이루어진 데이터의 집합
키는 중복을 허용하지 않고 값의 중복을 허용며 순서는 유지되지 않는다.
HashMap, TreeMap, Hashtable, Properties 

Stack, Vactor, Hashtable, Properties 같이 List, Set, Map가 포함되지 않은 이름의 클래스들은 컬렉션 프레임워크가
만들어지기 이전부터 존재했다, 호환을 위해 설계를 변경하여 남겨두었지만 사용하지 않는 것이 좋다.

 

컬렉션 종류와 특징

클래스에 대한 종류와 특징에 대해 설명하려고 한다.

각 컬렉션의 더 자세한 내용과 사용법은 링크를 타고 가서 보시면 된다. (⭐클릭 시 이동)

인터페이스 클래스 설명 링크
List ArrayList 배열기반이며 데이터의 추가와 삭제에 불리하지만
순차적으로 추가/삭제 하는 경우에는 가장 빠름. 
임의의 요소에 대한 접근성이 뛰어남.

데이터의 저장순서가 유지되고 중복을 허용한다.
컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션이다.🔥
LinkedList 연결기반이며 중간 데이터를 추가/삭제 하는 경우 유리함
임의의 요소에 대한 접근성이 나쁨
데이터의 
저장순서가 유지되고 중복을 허용한다.
Set HashSet 배열과 연결이 결합된 Hashing형태로
추가, 삭제, 검색, 접근성이 모두 뛰어남.
검색에는 최고성능을 보인다.
Set인터페이스를 구현한 가장 대표적인 컬렉션이다.👏
💡(많은 양의 데이터를 저장하는데 적합하다.)
TreeSet 연결기반이며 정렬과 검색(특히 범위검색)에 적합하지만
검색능력이 HashSet보다 떨어진다.
데이터의 
저장순서가 유지되지 않고 중복을 허용하지 않는다.
💡(검색과 정렬에 적합하다)
Map

HashMap 키(key) 값(value)을 묶어 하나의 데이터로 저장한다
배열과 연결이 결합된 Hashing형태로
추가, 삭제, 검색, 접근성이 모두 뛰어남.
검색에는 최고성능을 보인다.
💡(많은 양의 데이터를 저장하는데 적합하다.)
TreeMap 키(key) 값(value)을 묶어 하나의 데이터로 저장한다.
연결기반이며 정렬과 검색(특히 범위검색)에 적합하지만
검색능력이 HashMap보다 떨어진다.
💡(검색과 정렬에 적합하다)
Properties Properties(String, String)의 형태로 저장하는 단순화된 컬렉션이다.
주로 애플리케이션의 환경설정과 관련된 속성(property)을 저장하는데 사용하고
데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공하기 때문에
간단한 입출력은 Properties를 활용하면 몇 줄의 코드로 쉽게 해결된다.

 

각 자료구조의 더 자세한 내용은 링크를 타고 가서 보시면 된다.(⭐ 클릭 시 이동)

자료구조 설 명 링크
LinkedList 각 노드가 서로의 주소를 가지고 있는 구조로
중간에 있는 데이터를 찾거나 수정하는데 강하다.
Stack 마지막에 들어간 데이터가 먼저 나오는 구조
Queue 처음에 들어간 데이터가 먼저 나오는 구조
Deque(디큐) Stack과 Queue를 합친 구조
Hasing 배열과 LinkedList의 특성을 합친 구조로 
배열안에 LinkedList가 들어 있다고 생각하자.
Tree 여러개의 노드가 서로 연결된 구조
각 노드에 최대 2개의 노드를 연결 할 수 있으며
'루트(root)'라고 불리는 하나의 노드에서부터 
계속 확장해 나갈 수 있다.