본문 바로가기

Java

[JAVA / 자바] 컬렉션 프레임워크(Collection Framework)란

컬렉션

- 여러 객체를 모아놓은 것을 의미 (객체의 집합)

- 자료구조가 내장되어있는 클래스
 -> 자료구조 : 데이터들을 효율적으로 다루기 위해  (조회, 정렬, 추가, 수정, 삭제)필요한 개념
 

프레임워크 

- 표준화, 정형화된 체계적 프로그래밍 방식으로, 기능+프로그래밍 방식을 강제함

 => 정해놓은 규칙에 따라 프로그래밍을 하므로 작업의 생산성이 올라가고, 유지보수 용이

    (다른사람이 작성한 코드를 이해하기 쉬움)

 

 

Collction Framwork란?

- 컬렉션(다수의 객체=다수의 data)를 다루기 위한 표준화된 프로그래밍 방식

- 데이터들이 새롭게 추가되거나, 삭제되거나, 수정 되는 기능(알고리즘)들이 이미 정의되어 있는 틀

- 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것

- 컬렉션을 쉽고 편하게 다룰 수 있는(저장, 삭제, 검색, 정렬) 다양한 클래스 제공

- java.util패키지에 포함되며, JDK 1.2부터 제공

 

 

배열과 Collection의 차이점

배열의 특징

  1. 한가지 타입의 데이터만 저장 가능
  2. 사용을 위해 사전에 배열의 크기를 지정해야하며, 한 번 지정된 크기는 변경이 불가능
   => 지정된 크기를 넘어서는 새로운 값 추가 시에는, 새로운 크기의 배열을 만들고, 기존의 내용들을 복사하는 코드를 짜야함
  3. 배열 중간 위치에 새로운 데이터를 추가하거나 삭제 하는 경우에도 마찬가지로 기존의 인덱스 순서를 변경하는 코드를 짜야함
 

컬랙션의 특징
 1. 기본적으로 여러 타입의 데이터를 함께 저장 가능
  => Generic설정을 통해 같은 타입의 타입의 데이터들만 저장하는 것도 가능
  2. 크기에 제약이 없음 => 크기를 지정하지 않고도 사용이 가능

  3. 사전에 크기를 지정했더라도, 지정된 크기를 넘어서는 값 추가시에는 자동으로 크기가 늘어남

  4. 인덱스 중간에 값을 추가하거나 삭제를 위한 코드가 메소드로 정의되어있음
 

*  정리  *

방대한 데이터들을 저장해두고 "조회"만 할 목적이라면 => 배열을 사용하는 것이 유리
방대한 데이터들을 저장 및 추가, 수정, 삭제가 일어나는 경우 => 컬렉션을 사용하는 것이 유리
   

Collection Framework의 핵심 인터페이스 및 Hierarchy

List, Set 인터페이스에서 공통부분을 뽑은 것이 Collection 인터페이스이며, Map은 나머지 둘과 공통부분이 많지 않아 Collection 인터페이스에서 제외

 

  • List 계열 : 담고자하는 값(Value)만 저장 / 저장 시 순서 유지(Index), 중복값 허용
  • Set 계열 : 담고자하는 값(Value)만 저장 / 저장 시 순서 유지 X, 중복값 허용 X
  • Map 계열 : 키(key) + 값(Value) 세트로 저장 / 저장 시 순서 유지 X, 중복 키 허용X / 중복 값 허용

 

source: https://techvidvan.com/tutorials/java-collection-framework/

 

List<E> 저장순서가 있는 데이터의 집합으로, 데이터의 중복을 허용
예) 대기자 목록
Vector(옛날버전),
ArrayList, LinkedList, (중요)
Stack, Queue
Set<E> 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않음
예) 집합
HashSet, TreeSet
Map<K, V> 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음.
키는 중복 불가, 값은 중복가능
HashMap ->  LinkedHashMap(순서O),
SortedMap-> TreeMap,
Hashtable(옛날버전),
Properties

 

 

 

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 타입의 배열로 반환

 

 

Reference

http://www.tcpschool.com/java/java_collectionFramework_concept

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://techvidvan.com/tutorials/java-collection-framework/

'Java' 카테고리의 다른 글

[JAVA / 자바] 배열 (part1)  (1) 2023.02.26
[JAVA / 자바] API vs Library: API와 Library의 차이  (1) 2023.02.21
[JAVA / 자바] API - Math클래스  (0) 2023.02.20
Properties 객체  (0) 2022.11.10
[JAVA / 자바] 조건문과 반복문  (1) 2022.10.15