JAVA/Language

JAVA 콜렉션 프레임워크( Collection framework)

오늘도개발 2022. 8. 26. 20:43

1. Collection 프레임워크란?

 

 콜렉션 프레임워크는 데이터를 편리하게 관리하기 위한 기능을 제공한다. C에서 배열을 사용하다 보면

 

실제로 필요한 기능을 구현하기 위해서는 많은 부분을 기계적인 접근 방법을 사용해야한다. 그러므로

 

콜렉션 프레임워크를 사용하면 개발자의 논리적인 데이터의 움직임을 좀 더 쉽게 코드로 구현할 수 있다.

 

2. Collection framework 의 구성

 

콜렉션 프레임워크는 크게 List, Set, Map  클래스가 있다.

 

List는 항상 크기가 정해져 있는 배열을 가변적으로 사용할 수 있게 해준다. List의 특징은 순서가 정해져 있으며 데이터

 

중복이 가능하다.

 

Set은 순서를 유지하지 않으며 데이터 중복이 불가능 하다.

 

Map은 순서를 유지하지 않고 키의 값은 중복이 불가능하지만, 값의 중복은 가능하다. (DB 데이터 관리 방식과 유사) 

 

 

3. Collection 프레임 워크의 List 인터페이스의 클래스

 

 Collection 프래임워크의 인터페이스 구성은 위와 같고 인터페이스 내 클래스 구성은 다음과 같다.

 

 

JAVA에서는 주로 크기가 고정된 경우 ArrayList를 사용하고, 크기가 동적인 경우에는 LinkedList를 사용한다.

 

그러므로 각 상황에 맞는 자료 구조를 사용하면 된다.

 

vector의 경우 데이터가 동기화가 되어있다는 장점을 가지는데, 멀티 쓰레드 프로그램을 사용하다 보면 타이밍 차이로 다른

 

데이터가 들어가 런타임 오류를 일으킨다. 그러므로 이 때, 동기화는 유용한 기능이므로 vector를 사용한다.

 

추가 설명> 위 자료구조들은 배열(Array)을 사용하여 코딩할 때, 논리적인 생각에 따른 코딩을 쉽게하기 위해서 만들어진 형태이다.

그러므로 각각의 자료형이 배열의 단점을 보완하기 위해 만들어진 것이므로, 상황에 맞게 적절하게 사용하는것이 좋다.

 

4. Collection 프레임 워크의 Set 인터페이스의 클래스

데이터의 중복을 허용하지 않고 저장하기 위해서는 Collection의 Set 클래스를 사용한다.

 

TreeSet은 부모와 자식노드를 가지고 이진 트리의 형태로 자료를 저장함으로 빠르게 정렬하면서 데이터를

 

저장할 수 있다.

 

TreeSet의 데이터 구조는 다음과 같다.

 

 

데이터를 정렬하면서 저장하기 때문에 검색 속도가 빠르다는 장점을 가지고 있다.

 

 

5. Collection 프레임 워크의 Map 인터페이스의 클래스

 

Map은 Set과 유사하게 Key(키)의 중복을 허용하지 않지만 Value(값)의 중복을 허용한다.

 

 

6.  동기화

 

앞에서는 동기화가 필요한 경우 특별한 자료구조형을 사용해서 동기화를 하여야 한다고 설명했다. 하지만 Java에서는 데이터의 동기화를

 

지원해주는 문법이 존재함으로 이를 사용한다면 다른 자료구조형에서도 동기화된 데이터를 관리할 수 있다.

 

1. synchronized

 

static Collection syncronizedCollection (Collection c) 형태로 컴파일시 공간을 생성해서 동기화를 진행하는 방법이다.

 

2. unmodifiable

 

static Collection unmodifiableCollection (Collection c) 형태로 컴파일시 생성 후 수정불가로 지정하여 동기화를 할 수 있다.

 

3. 디자인패턴 활용

 

singleton 디자인 패턴을 활용하여 클래스가 컴파일시 1번 생성하고 이 객체가 유지되면서 실행 구조적으로 동기화를 할 수 있다.

'JAVA > Language' 카테고리의 다른 글

JAVA Array (배열)  (0) 2022.08.20
JAVA 반복문( for, while, do - while )  (0) 2022.08.15
JAVA 조건문 (if, else, switch)  (1) 2022.08.15
JAVA 연산자(operator)  (2) 2022.08.15
JAVA 변수(variable) 선언 및 호출  (2) 2022.08.07