※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요!
[ 1 ] 컬렉션 프레임워크란?
컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이다.
즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현한 것을 의미한다.
자바 컬렉션 프레임워크는 Interface로 구현된다.
[ 2 ] 구조
컬렉션 프레임워크에는 Collection 인터페이스를 상속받는 List, Set, Queue 가 있고, Collection 을 상속받지 않는 Map 이 있다. 둘의 큰 차이는 Iterable 인터페이스를 상속받냐, 상속받지 않냐의 차이인데 Iterable 인터페이스를 상속받은 Collection 인터페이스는 Iterator와 for-each를 제공한다. 즉, 컬렉션 프레임워크 객체의 데이터를 순회하는 것이 쉽다! (물론 Map 의 데이터를 순회하는 여러가지 방법 또한 존재한다)
(1) List 인터페이스
List 인터페이스는 선형 자료구조로서 순서가 있는 데이터를 저장하기 위해 만들어진 인터페이스이다. 데이터의 중복을 허용하며, 일반적인 배열(int[] arr = new int[10])과 달리 List를 통해 구현된 클래스들은 동적 크기를 가져 데이터 저장에 용이하다.
- List 인터페이스를 구현하는 클래스: ArrayList, LinkedList, Vector, Stack
(2) Set 인터페이스
Set 인터페이스는 수학에서의 '집합'과 같으며, '데이터를 중복해서 저장할 수 없음', '입력 순서대로 저장 순서를 보장하지 않음'의 특징이 있다. 단, Set을 구현하는 LinkedHashSet은 저장 순서를 보장한다.
- Set 인터페이스를 구현하는 클래스: HashSet, LinkedHashSet, TreeSet
(3) Queue 인터페이스
Queue 인터페이스는 대표적인 자료구조 중 하나로 First-in First-out(FIFO)의 특징이 있다. 즉, 먼저 들어온 데이터가 먼저 출력되는 구조이다. Queue를 상속받는 Deque 인터페이스도 있는데, Deque은 Double-ended Queue로서 Queue와 달리 양쪽에서 데이터의 삽입삭제가 가능한 자료구조이다.
- Queue, Deque 인터페이스를 구현하는 클래스: LinkedList, ArrayDeque, PriorityQueue
(4) Map 인터페이스
Map 인터페이스는 위 세개의 인터페이스와 달리 Collection을 상속받지 않는다. Map은 key와 value의 쌍이 저장되는 자료구조로서 데이터 저장 시 순서는 유지되지 않는다. key는 중복될 수 없는 반면, value는 중복을 허용한다.
- Map 인터페이스를 구현하는 클래스: HashMap, Hashtable, TreeMap ..
[ 참고자료 ]
https://catsbi.oopy.io/8f0f5192-3a06-405e-8076-dbc5ff9f2dfb
컬렉션 프레임워크
목차
catsbi.oopy.io
http://www.tcpschool.com/java/java_collectionFramework_concept
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
https://st-lab.tistory.com/142
자바 [JAVA] - 자바 컬렉션 프레임워크 (Java Collections Framework)
아마 프로그래밍을 전공한다면 '자료구조'라는 단어를 들어본 적이 있을 것이다. 자료구조는 Data Structure라고 하는데, 직역하면 데이터 구조. 좀 더 자세하게 설명하자면 '일련의 일정 타입들의
st-lab.tistory.com
'Programming > Java' 카테고리의 다른 글
[Java] JVM, Java 환경변수 설정(Mac, 기본 zsh 쉘) (5) | 2023.01.18 |
---|---|
[Java] List Interface (0) | 2022.10.10 |
[Java] length, length(), size() 차이 (1) | 2022.10.02 |
[Java] Enum 클래스 (1) | 2022.08.29 |
[Java] Object 클래스 (0) | 2022.08.25 |