본문 바로가기

프로그래밍 공부/Java

Java - 컬렉션 프레임워크(Collection framework)

Java에서 컬렉션 프레임워크는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이다. 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화해 클래스로 구현한 것이다. 

컬렉션 프레임워크는 자바의 인터페이스를 사용해 구현된다.

컬렉션 프레임워크의 주요 인터페이스

컬렉션 프레임워크에서 데이터를 저장하는 자료 구조에 따라 아래와 같은 핵심이 되는 주요 인터페이스를 정의 한다.

1. List 인터페이스
2. Set 인터페이스
3. Map 인터페이스

이중에서 List와 Set 인터페이스는 모두 Collection 인터페이스를 상속받고 Map 인터페이스는 구조상의 차이로 별도로 정의된다. 따라서 List 인터페이스와 Set 인터페이스의 공통된 부분을 Collection 인터페이스에서 정의하고 있다.

주요 인터페이스 간의 상속 관계
Map<K, V> List<E> Set<E> Queue<E>
 
Collection<E>
Iterable<E>

Java 컬렉션 프레임워크를 구성하는 인터페이스간의 상속 관계를 표현한 표이다. 위의 표에서 <E>나 <K, V>라는 것은 컬렉션 프레임워크를 구성하는 모든 클래스가 제네릭으로 표현되어 있는 것을 알려주는 것이다.

인터페이스 설명 구현 클래스
List<E> 순서가 있는 데이터 집합, 데이터 중복 허용 Vector, ArrayList, LinkedList, Stack, Queue
Set<E> 순서가 없는 데이터 집합, 데이터 중복 불가 HashSet, TreeSet
Map<K, V> 키와 값이 한 쌍인 데이터 집합, 순서는 없고, 키는 중복 허용, 값은 중복 불가 HashMap, TreeMap, Hashtable, Properties

위는 Java에서 컬렉션 프레임워크를 구성하고 있는 주요 인터페이스의 간략한 특징들이다.

컬렉션 클래스(Collection class)

컬렉션 프레임워크에 속하는 인터페이스를 구현한 클래스를 컬렉션 클래스라고 한다. 컬렉션 프레임워크의 모든 컬렉션 클래스는 List와 Set, Map 인터페이스 중 하나의 인터페이스를 구현한다. 또 클래스 이름에도 구현한 인터페이스의 이름이 포함되어 있어서 구분이 가능하다.

Vector나 Hashtable과 같은 컬렉션 클래스는 예전부터 사용했고, 기존 코드와의 호환을 위해 아직도 남아있다, 하지만 기존에 사용하던 컬렉션 클래스를 사용하는 것보다 새로 추가된 ArrayList나 HashMap 클래스를 사용하는 것이 성능면에서 좋다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        // 리스트 생성
        ArrayList<String> arrList = new ArrayList<String>(); 
 
        // 리스트에 요소의 저장
        arrList.add("넷");
        arrList.add("둘");
        arrList.add("셋");
        arrList.add("하나"); 
 
        // 리스트 요소의 출력
        for(int i = 0; i < arrList.size(); i++) {
            System.out.println(arrList.get(i));
        }
    }
}
cs

Collection 인터페이스

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

 

'프로그래밍 공부 > Java' 카테고리의 다른 글

Java - Java 8 : 스트림 API(Steam API)  (0) 2020.02.27
Java - Java 8 : Lambda  (0) 2020.02.26
Java - 스레드(Thread)  (0) 2020.02.25
Java - 예외 처리  (0) 2020.02.24
Java - 제네릭(Generic)  (0) 2020.02.24