Java

Collection Framework

yong_ღ'ᴗ'ღ 2022. 11. 6. 03:21

Collection Framework: 다양한 자료구조의 구현체를 클래스 라이브러리 형태로 제공

java.util.ArrayList<E> → 중복허용,  데이터 간 순서 존재

java.util.HashSet<E> → 중복허용X, 데이터 간 순서 존재

java.util.HashMap<K,V> → 중복허용, 데이터 간 순서 X 

 

 

Array와 ArrayList

· Array

> 데이터 개수의 동적인 변경 불가 (fixed-size)

> 메모리상에 연속적 데이터를 저장한다. 미리 할당된 크기만큼 저장

> 현재 배열 size가 4인데 6으로 다시 만들면, resize 되었다고 느낄 수 있지만

   현재와 동일한 메모리에 size를 2개 더 추가하는 것이 아니라, 새롭게 size가 6인 메모리를 할당한다.

 

· ArrayList

> 데이터 개수의 동적인 변경 가능

> 메모리상에 불연속적으로 데이터를 저장한다.

> Primitive Type 데이터는 원소로 가질 수 없음. Object Type 만 원소로 가질 수 있음

   그렇다고 ArrayList에 int, float 등의 데이터를 저장하지 못하는 것이 아니다.

   다만, 그 데이터를 저장할 때 값 자체가 저장되는 것이 아니라

   그 값이 저장되어 있는 reference Type의 value들이 Object 형태로 저장되는 것이다.

 

 

주요 인터페이스들의 특징

· java.util.List<E> Interface

> 구현하고 있는 클래스 ex) ArrayList<E>, LinkedList<E>, Stack<E> ...

> 순서가 있는 데이터의 집합

> 데이터들 간 중복을 허용

 

· java.util.Set<E> Interface

> 구현하고 있는 클래스 ex) HashSet<E>, TreeSet<E> ...

> 순서가 있는 데이터의 집합

> 데이터들 간 중복을 허용하지 않음

 

· java.util.Map<K,V> Interface

> 구현하고 있는 클래스 ex) HashMap<K,V>, TreeMap<K,V> ...

> 순서가 없는 데이터의 집합

> Key는 중복을 허용하지 않지만, Value는 중복을 허용한다.