본문 바로가기
Java

[Java] - 컬렉션(Collection) 이란?

by 개발 고양이 2024. 7. 4.

1. 컬렉션 프레임워크(Collection Framework) 란?

여러 데이터들을 효율적으로 다루기 위한 자료구조들을 클래스로 구현해놓은 집합을 말한다. 

C++의 STL (Standard Template Library)와 비슷한 개념이라고 보면 된다. 

 

컬렉션의 장점을 배열로 예시를 들어보자면,
일반적인 배열은 정적으로 메모리를 할당하기 때문에, 배열의 크기가 고정되어 추가적인 공간이 필요할 경우 문제가 발생할 수 있다. 하지만 컬렉션의 클래스를 이용하면 메모리를 동적으로 할당할 수 있다.

많이 사용되는 클래스들의 계층 구조

 

List와 Set 인터페이스는 Collection 인터페이스를 상속받는 반면 Map 인터페이스는 구조상의 차이 (key와 value의 쌍을 가지고 있는 구조)로 별도로 정의된다.


2. 컬렉션의 종류

위 그림에서 볼 수 있듯이, 컬렉션 프레임워크의 주요 인터페이스는 크게 4가지로 나눌 수 있다.

 

ArrayList, LinkedList, Hashmap 등의 클래스들은 정말 많이 쓰이는 클래스들이므로 사용법을 알아놓으면 코딩이 한결 편해질 것이다. 

 


3. 컬렉션의 특징

앞선 표에서 눈치챘겠지만, 독특하게도 컬렉션 클래스의 이름 끝에는 <E>, <V>, <K> 등이 항상 붙어 있다. 이 부분을 타입 매개변수라고 한다. 이러한 기법을 제네릭 (generics) 이라고 부른다.

 

제네릭(generics) 이란?

한 번의 정의로 다양한 타입의 데이터들을 다룰 수 있는 방법이다. (데이터 형식에 의존하지 않기 위해 만든 방법)

  • E - Element
  • T - Type
  • K - Key
  • V - Value

 

T와 E는 사실 똑같아서 둘 중 어떤 것을 쓰든 무방하지만,
배열형태의 클래스(ArrayList, Vector, LinkedList 등등..)에서 제네릭을 사용할 때에는 E (Element)를 보통 사용한다.

 

 

많이 쓰이는 컬렉션 중 하나인 ArrayList <E>로 간단한 예시를 들어 보겠다.

//컴파일 오류 발생. int 사용 불가
ArrayList<int> a = new ArrayList<int>(5);

//정상 실행 코드. 정수형 arraylist를 선언하려면 Integer을 사용
ArrayList<Integer> a = new ArrayList<Integer>(5);


//String형 ArrayList 선언하기
ArrayList<String> s = new ArrayList<String>();

 

 

ArrayList를 비롯한 주요 클래스들의 구체적인 사용 방법에 대해서는 추후 포스팅하도록 하겠다. 

 

'Java' 카테고리의 다른 글

[Java] - ArrayList 기본 사용법  (0) 2024.07.10