Kim VamPa

[Java]컬렉션 프레임웍(Collection Framework)란? 본문

공부/자바

[Java]컬렉션 프레임웍(Collection Framework)란?

Kim VamPa 2020. 5. 5. 09:18
728x90
반응형

개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.


목표

  • 컬렉션 프레임웍이 무엇인지 이해합니다.
  • 컬렉션 프레임웍과 배열의 차이점에 대해 이해합니다.
  • 컬렉션 프레임웍의 핵심 인터페이스에 타입의 특징에 대해 이해합니다.
  • 컬렉션 프레임웍의 핵심 인터페이스의 상속도를 공부합니다.

 

목차

1. 컬렉션 프레임웍(Collection Framework)이란?

2. 컬렉션 프레임웍 핵심 인터페이스

 

 

 

1. 컬렉션 프레임웍(Collection Framewokr)이란?

다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합

 컬렉션 프레임웍은 다수의 데이터(이하 데이터 군)를 다양하고 풍부하게 다룰 수 있도록 도와주는 도구(수단)입니다. 컬렉션(Collection)은 데이터 그룹(다수의 데이터), 프레임웍(Framework)는 표준화된 프로그래밍 방식을 의미합니다.

 

 개발자는 수많은 데이터를 다루어야만 합니다. 개발자가 수많은 데이터를 일일이 다룬다면 매우 많은 시간과 에너지가 낭비될 것입니다. 이러한 낭비를 줄여 주면서 데이터 군을 다를 수 있도록 도와주는 수단은 '배열'과 '컬렉션 프레임웍'이 있습니다. 

 

 개발자는 다수의 데이터를 다루는 상황에서 '배열'이 반드시 필요한 경우가 아니라면 대부분 '컬렉션 프레임웍'을 사용합니다. 그 이유로는 '컬렉션 프레임웍'이 좀 더 데이터 군을 다루는데 풍부하고 다양한 방식을 제공한다는 점과 '배열'의 불편한 점 때문입니다. 배열은 불편함은 생성 시에 선언한 크기는 변경이 안된고 하나의 배열은 하나의 타입만을 가질 수 있다는 점입니다. 반면에 컬렉션 프레임웍은 길이가 가변적이고 여러 가지 타입을 가질 수 있습니다.

 

 배열은 크기가 고정적이고 컬렉션 프레임웍은 크기가 가변적이다라는 차이점을 실습을 통해서 살펴보겠습니다. 저는 크기가 3인 배열 array와 컬렉션 프레임웍 에 해당하는 ArrayList list를 선언하였습니다. 

package collection;

import java.util.ArrayList;

public class ex {

	public static void main(String[] args) {
		/* 배열과 컬렉션 프레임웍 비교 */
		/* 배열 : 길이가 고정적 */
		/*컬렉션 프레임웍 : 길이가 가변적*/

		
		/* 배열 */
		int[] array = new int[3];

		
		/* 컬렉션프레임웍(ArrayList) */
		ArrayList list = new ArrayList();

		
	}

}

 

 array와 ArrayList에 각각 3개의 값을 추가시켜 console에 출력시켜보겠습니다.

 

package collection;

import java.util.ArrayList;

public class ex {

	public static void main(String[] args) {
		/* 배열과 컬렉션 프레임웍 비교 */
		/* 배열 : 길이가 고정적 */
		/*컬렉션 프레임웍 : 길이가 가변적*/
		
		/* 배열 */
		int[] array = new int[3];
		array[0] = 1;
		array[1] = 2;
		array[2] = 3;

		
		for(int i = 0; i < array.length; i++) {
			System.out.println("배열" + i + "는 " + array[i]);
		}
		
		System.out.println("--------------------------------");
		
		/* 컬렉션프레임웍(ArrayList) */
		ArrayList list = new ArrayList();
		list.add("list1");
		list.add("list2");
		list.add("list3");

		
		for(int i = 0; i < list.size() ;i++) {
			System.out.println("컬렉션 프레임웍 " + i + "는" + list.get(i));
		}
		

	}

}

 

그림 1

 

 이번엔 array에 한개의 값을 더 추가시켜보겠습니다.

그림 2
그림 3

 

 ArrayIndexOutofBoudsException오류가 발생했습니다. array배열의 크기를 3으로 선언하였는데 그보다 더 많은 4번째 값을 넣었기 때문입니다.

 

이번엔 list에 값을 더 추가 해보도록 하겠습니다.

그림4
그림 5

 

 Arraylist타입의 참조 변수 list 경우에는 많은 값을 추가시켜주었음에도 정상적으로 출력이 된 것을 볼 수 있습니다. Arraylist를 처음에 선언 시 크기가 10이지만 이후에 값을 추가시켜주더라도 추가시켜준 값만큼 크기가 변하기 때문입니다.

 

 

 

 

2. 컬렉션 프레임웍 핵심 인터페이스

 컬렉션 프레임웍은 3가지의 인터페이스로 구성되었습니다. 3가지 인터페이스는 'List', 'Set', 'Map'입니다. 그리고 인터페이스 List와 Set은 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였습니다. 아래 그림은 3가지 인터페이스의 상속도 입니다.

그림 6

 

 

 3개의 인터페이스는 각각의 특징을 가지고 있습니다. 개발자는 각각의 특징을 잘 이해하여 데이터 군을 다룰 시 그 상황에 맞는 컬렉션 프레임웍 인터페이스를 사용해야 합니다. 아래에 각 핵심 인터페이스의 특징 과 해당 인터페이스에 속하는 클래스 들에 대해 알아보겠습니다.

 

핵심인터페이스 특징

List

  • '순서'가 있는 데이터의 집합입니다. 데이터의 '중복'을 허용합니다.
  • ex) 대기자 명단
  • 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등
  • List의 상속계층도

그림 7

 

Set

  • '순서'를 유지하지 않는 데이터의 집합, 데이터의 '중복'을 허용하지 않습니다.
  • ex) 양의 정수 집합, 소수의 집합
  • 구현 클래스 : HashSet, TreeSet 등
  • Set의 상속계층도

그림 8

 

Map

  • 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합입니다.
  • 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용합니다.
  • ex) 우편번호, 지역번호(전화번호)
  • 구현 클래스 : HashMap, TreeMap, Hashtable, Properties 등
  • Map 상속계층도

그림 9

 

 

Reference

 

Date

  • 2020.05.05 작성

 

 

 

 

728x90
반응형
Comments