Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

컬렉션 프레임워크 (Collection Framework) 본문

Java/Java Basic

컬렉션 프레임워크 (Collection Framework)

snd-snd 2019. 9. 3. 23:57

2019/09/04 - [Java] - 컬렉션 - List

2019/09/04 - [Java] - 컬렉션 - Set

2019/09/04 - [Java] - 컬렉션 - Map

2019/09/04 - [Java] - 컬렉션 - Tree

2019/09/04 - [Java] - 컬렉션 - Stack, Queue


 

1. 컬렉션 프레임워크 란?

1) 다수의 데이터(객체)를 보다 쉽고 효과적으로 처리할 수 있는 클래스의 집합/라이브러리

2) 크게잡아 List, Set, Map 3가지 인터페이스로 정의되어있고 이를 상속, 구현하는 클래스, 인터페이스가 있다.

3) 기존의 배열이 가지고 있던 문제점을 해결하기 위해 만들어졌다.

 

# 배열이 가지고 있던 문제점

(1) 배열 생성시 배열의 크기를 정해야 하는데 크기가 특정되지 않은 데이터를 저장해야 할 경우 곤란함.

(2) 배열의 요소를 삭제할 경우 삭제된 요소의 인덱스가 비어지게되고 빈 공간을 체크해야하는 번거로움이 있음.

 

 

 

< Collection Framework API > 이미지 출처: https://palpit.tistory.com/653

 

 

 

# 주요 인터페이스

(1) List : 순서가 있는 데이터의 집합으로 데이터의 중복 저장이 가능

(2) Set : 순서가 없는 데이터의 집합으로 데이터의 중복 저장이 불가능

(3) Map : 키와 값의 한 쌍으로 구성되는 집합으로 순서가 없고, 키는 중복 불가/값은 중복 가능

 

 

 

2. Collection 인터페이스

List, Set 인터페이스의 많은 공통된 부분을 Collection 인터페이스에서 정의하고 두 인터페이스는 그것을 상속 받는다.

Collection 인터페이스의 메소드는 아래와 같다.

 

 

Method Remarks
boolean add(E e) 해당 컬렉션에 전달된 요소를 추가
void clear() 해당 컬렉션의 모든 요소를 제거
boolean contains(Object o) 해당 컬렉션에 전달된 객체를 포함하고 있는지 확인
boolean equals(Obejct o) 해당 컬렉션과 전달된 객체가 같은지 확인
boolean isEmpty() 해당 컬렉션이 비어있는지 확인
Iterator<E> iterator() 해당 컬렉션의 반복자를 반환
boolean remove(Object o) 해당 컬렉션에서 전달된 객체를 제거
int size() 해당 컬렉션의 요소의 총 개수를 반환
Object[] toArray() 해당 컬렉션의 모든 요소를 Object타입의 배열로 반환

<표> Collection 인터페이스의 주요 메소드

 

 

 

3. 동기화 (synchronized)

멀티 스레드 환경에서 하나의 스레드가 작업 중일 때 다른 스레드가 동시에 작업을 할 수 없게 해 문제 발생을 막는다.

컬렉션으로는 Vector와 Hashtable이 있으며 기존의 컬렉션을 동기화된 컬렉션으로 래핑하는 방법도 존재한다.

 

 

// 비동기화 상태인 컬렉션을 동기화된 컬렉션으로 변경하는 방법
List<T> list = Collections.synchronizedList(new ArrayList<T>());
Set<T> set = Collections.synchronizedSet(new HashSet<T>());
Map<K, V> map = Collections.synchronizedMap(new HashMap<K, V>());

'Java > Java Basic' 카테고리의 다른 글

컬렉션 - Set  (0) 2019.09.04
컬렉션 - List  (0) 2019.09.04
함수적 인터페이스 - Predicate  (0) 2019.09.03
함수적 인터페이스 - Operator  (0) 2019.09.03
함수적 인터페이스 - Function  (0) 2019.09.03
Comments