프로그래밍언어/Java

[JAVA] 컬렉션 프레임워크(Collection Framework) / 제네릭(Generic)

개발하는소유밍 2023. 12. 20. 21:04

✔ Generic(제네릭) 이란 ?

 

 - 한번의 정의로 여러 종류의 데이터의 타입을 다룰 수 있도록 하는 방법

 한마디로 특정 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반화 시키는 도구

 

 (예시)

 *  ArrayList<E>의 형태로 클래스가 정의되어있다면, 

 데이터로 String을 사용할 때엔 ArrayList<String>, Integer로 사용할때는 ArrayList<Integer>로 지정

 


 

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

 

 + 컬렉션 : 여러 객체(데이터)를 담을 수 있는 자료 구조, 데이터 그룹 또는 집합.

          가변적인 크기를 가지며, 데이터 삽입, 탐색, 정렬 등 편리한 API를 다수 제공

 + 프레임워크 : 표준화 된 프로그래밍 방식

 = 컬렉션 프레임워크다수의 요소를 하나의 그룹으로 묶어서 효율적으로 저장하고 관리하는 클래스들을 표준화 한 설계

        일관된 API 인터페이스를 제공하고, 구현하는 클래스를 제공

 

 

(1) 컬렉션 프레임워크의 구성 요소

  - 인터페이스(Interfaces) : 각 컬렉션을 나타내는 추상 데이터에 대한 인터페이스, 일관된 조작법( ex. List, Set, Map 등 )

  - 클래스(Classes) : 컬렉션 별 인터페이스의 구현, 목적에 따라 인터페이스의 상세 구현이 달라질 수 있음

  - 알고리즘(Algorithms) : 컬렉션이 제공하는 연산, 검색, 정렬, 셔플 등에 대한 메서드

 

(2) 컬렉션 프레임워크의 종류

  - 리스트(List) : 인덱스 순서로 요소 저장, 중복 가능

  - 큐(Queue) : 선입선출(FIFO: First In First Out)의 구조를 갖는 선형 자료구조

  - 집합(Set) : 순서가 없고, 데이터 중복 저장도 안되며, 집합 연산(합집합, 교집합, 차집합 등) 지원

  - 맵(Map) : key-value 로 데이터 저장. 순서는 없고, key만 중복 불가

 

(2) 컬렉션 프레임워크의 특징

 -  컬렉션 클래스들이 다루는 데이터는 기본적으로 객체(Object) 만 가능

 - 컬렉션 자체가 제네릭 기법으로 구현되어 있고, 컬렉션의 요소는 객체만 가능

    char, int, float 과 같은 기본형(primitive) 대신 Integer, Double 등 Wrapper타입으로 변환하여 사용해야함

 - null 사용 가능

 - Vector<E>에서 E 대신 구체적인 타입을 지정하면 그 값만 저장하는 벡터를 사용할 수 있다.

 


 

+ List / queue / Set / Map 에 대한 차이점과 계층 구조에 대한 포스팅으로 가기 전에 간단하게 남기고 싶은 내용 추가

 

✔ List Collection(컬렉션) 과 배열(Array)의 차이

배열은 고정 크기 이상의 객체를 관리할 수 없지만 컬렉션은 가변 크기이기 때문에 염려가 필요 X

 

 - List 컬렉션 : 객체를 일렬로 늘어놓은 구조.

객체를 인스턴스로 관리하기 때문에 List 컬렉션에 객체를 추가하면 자동으로 인덱스가 부여됨

인덱스로는 객체의 검색, 삭제 등에 사용(null도 저장할 수 있다.)

 

 

 

* 컬렉션 프레임워크의 종류에 대한 내용은 다음 작성글 참고 *

300x250

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

[Java] 생성자(Constructor)의 특징  (0) 2024.02.16