Colletions Framework

bbangho·2023년 4월 26일
0

Java Collections Framework

컬렉션 프레임웍이란, '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다. 의미를 나누어 생각해보자 컬렉션는 다수의 데이터를 뜻하고 프레임웍 은 표준화된 프로그래밍 방식을 뜻한다. 컴퓨터세계속에서 쓰이는 단어이다.(나중에 정리하겠다. 틀이 짜여져있고 그 속에서 결과물을 만들어내는것을 뜻한다. )

요즘 알고리즘문제를 푸는데 , 문제를 풀기 위해서는 문제를 해석한 다음 자료구조를 선택해야 한다. 하지만 필자는 자료구조의 깊은 이해 없이 알고리즘을 푸려고 하니 힘들다. 이기회에 컬렉션 프레임웍의 실제 소스코드를 구현해보며 객체지향적인 설계 능력을 향샹시키고 싶다.

https://st-lab.tistory.com/ 이분과 자바의 정석 3 판을 보며 쓸 예정이다.

컴퓨터 공학 관련 수업을 2년째 듣고있는 필자는 방법론과 구현은 다르다는것을 느꼇다. 방법론은 사람들이 이해하기 쉽게 나와있고 실제 구현되는 것은 다소 어려울 수 있다.그리고 추상화가 중요하다고 생각한다. 현재 나와있는 기능들은 수없이 많다. 이해하기 쉽게 간편하게 생각해보자.

출처 : https://st-lab.tistory.com/

자바 프레임웍에는 많은 것들이 있지만 저것을 보면 머리가 아프다.
단순하게 생각해보자. 다수의 데이터를 관리하는 것 정도로 생각한다.

단순하게 보기

자바에선 Map을 Collection Interface라고 생각하지 않는다.
이유는 Mapping을 collection이라 보지 않고 collection은 mapping이 아니라고 느낀다 라고한다.
https://docs.oracle.com/javase/8/docs/technotes/guides/collections/designfaq.html#a14

List와 Set을 구현한 컬렉션 클래스들은 서로 많은 공통부분이 있어서, 공통된 부분을 다시 Collection으로 정의할 수 있다.

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

그러나 Vector, Stack, Hashtable, Properties 같은 클래스들은 컬렉션 프레임웍이 만들어지기 이전부터 존재하던 것이기 때문에 컬렉션 프레임웍의 명명법을 따르지 않는다. 호환을 위해 남겨두었다.

Collection Interface

List와 Set의 조상인 Collection 인터페이스에는 컬렉션 클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 등 컬렉션을 다루는데 가장 기본적인 메서드들을 정의하고 있다. Collection이 Iterable을 상속받고 있기 때문에 iterator 로 접근이 가능하다.

List Interface

List인터페이스는 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용된다.

Set Interface

Set 인터페이스는 중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션을 구현하는데 사용된다. Set 인터페이스를 구현한 클래스로는 HashSet, TreeSet 등이 있다.

Map Interface

Map 인터페이스는 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용된다. 키는 중복될 수 없지만 값은 중복을 허용한다. 기존에 저장된 데이터의 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남게된다. Map 인터페이스를 구현한 클래스로는 Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap 등이 있다.

Queue와 Deque

Queue는 FIFO(First in First out) 구조로 되어있고
Deque 은 (Double ended Queue)이다 양쪽으로 추가/ 삭제 할수 있는 것이다.


구현할 것

위의 특징들을 기억하며 Collection Framewor를 하나씩 구현해 볼 것이다.

List

•ArrayList

•LinkedList

•Vector

•Stack

Queue

•Queue(by LinkedList)

•PriorityQueue

•Deque(by LinkedList)

•ArrayDeque

Set

•HashSet

•LinkedHashSet

•TreeSet

profile
2024. 06.17

0개의 댓글