gimmickbutreal

[CS/Java] Collection Framework란 무엇일까? 본문

CS

[CS/Java] Collection Framework란 무엇일까?

isshosng 2022. 7. 14. 22:48

Collection Framework

정의

Java에서 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이며, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것

여기서 말하는 구조화란 구조화 된 프로그래밍을 일컫는 말인데, 선택(if / then / else) 및 반복 ( while/ for), 블록 구조의 구조화된 제어 흐름 구성을 광범위하게 사용하여 컴퓨터 프로그램의 명확성과 품질 및 개발 시간을 개선하는 것을 목표로 하는 프로그래밍 패러다임을 의미합니다.

 

Collection Framework는 3가지 구성 요소인 인터페이스, 구현, 알고리즘으로 이루어져 있습니다.

 

 

 

 

Collection Framework 모식도

 

 위 그림에서 <E>, <K,V>는 Collection Framework를 구성하는 모든 클래스가 제네릭으로 표현되어 있음을 알려주고 있습니다. 

보시다시피 인터페이스는 크게 "List", "Set", "Map", "Queue"가 있습니다. 주로 Queue를 제외한 3가지 인터페이스가 주로 쓰이며 그 특징은 아래와 같습니다.

 

인터페이스 정의 구현 클래스
List<E> 순서가 있는 데이터의 집합으로, 중복을 허용 Vector, ArrayList, LinkedList, Stack, Queue
Set<E> 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않음 HashSet, TreeSet
Map<K,V> 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 값은 중복을 허용하나, 키는 허용하지 않음 HashMap, TreeMap, Hashtable, Properities

 

Collection Interface

정의

Collection Framework에 속하는 인터페이스를 구현한 클래스

 

— 아래 내용은 oracle docs

The collection interfaces are divided into two groups. The most basic interface, java.util.Collection, has the following descendants:

The other collection interfaces are based on java.util.Map and are not true collections. However, these interfaces contain collection-view operations, which enable them to be manipulated as collections. Map has the following offspring:

 

정의 : Collection Framework에 속하는 인터페이스를 구현한 클래스

 

해당 Framework의 모든 Collection 클래스는 List, Set, Map 인터페이스 중 하나의 인터페이스를 구현합니다. 이는 클래스 이름에도 구현한 인터페이스의 이름이 포함되어 바로 구분할 수 있습니다.아래 예제는 ArrayList 클래스를 이용하여 List를 생성하고 조작하는 예제 코드입니다.

import java.util.ArrayList;

public class Collection {
    public static void main(String[] args){

        ArrayList<String> arrList = new ArrayList<String>();

        arrList.add("Li");
        arrList.add("nan");
        arrList.add("ce");

        for(int i = 0; i<arrList.size(); i++){
            System.out.println(arrList.get(i));
        }
    }
}

-----

출력 결과

Li
nan
ce

Collection 인터페이스

List와 Set 인터페이스의 많은 공통된 부분을 Collection 인터페이스에서 정의하고, 두 인터페이스는 해당 공집합을 상속 받습니다. 따라서, Collection 인터페이스는 컬렉션을 다루는 데 가장 기본적인 동작들을 정의하고, 아래의 methods로 제공하고 있습니다.

메소드 정의

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

'CS' 카테고리의 다른 글

스택과 큐 Stack & Queue  (0) 2023.07.12
연결리스트 LinkedList  (0) 2023.07.12
복잡도  (0) 2023.07.06
[CS/DB] SQL과 NoSQL의 차이  (0) 2022.07.31
[CS/Java] 옵저버 패턴(Observer Pattern)  (0) 2022.07.24