Skills/Java

Java - Collection

aoaa 2022. 7. 18. 16:23

 Java에서 Collection에 대해 부분적으로만 알고 있어, 전체적으로 숙지하고자 작성한 글입니다.

 


1. Collection

 Java에서 Collection객체 그룹을 저장, 조작하기 위한 아키텍처를 제공하는 프레임워크로 JDK1.2에서 Collection Framework라는 개념이 정의 되었습니다. 

 

https://blog.breakingthat.com/2018/05/07/java-collection-%EA%B0%9C%EC%9A%94-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0/

 Collection은 사진과 같이 List Set, Queue로 구성되며, Map은 Collection에 포함되지는 않지만 Collection으로도 분류한다고 합니다.

import java.util.Collection 
import java.util.Map
import java.util.* // util 디렉토리에 있는 모든 클래스를 import

 호출 시에는 위와 같이 호출하게 되는데, util.*의 경우 util 디렉토리에 있는 모든 클래스를 import 하게 됩니다.


2. 쓰는 이유?

 첫 번째로 사용하는 자료구조를 이미 Java라는 언어로 구현해놓은 프레임워크로 제공하기 때문에 알고리즘을 고민할 시간을 아껴 코드 설계와 개발에 집중할 수 있게 됩니다. Collection이 없다고 생각해보면 순서가 있는 데이터 묶음을 중간에 삽입과 삭제한다고 가정한다고 하면 어떻게 설계해야하는지 코드를 짜는데 고민하겠지만, 이미 구현된 프레임워크를 통해 자료구조를 직접 구현하지 않고 사용만하면 되기 때문에 시간이 단축할수 밖에 없습니다. 

 두 번째일괄된 API를 사용하기 때문에 새로운 API를 설계하기 위한 노력과 시간이 감소하게 됩니다. 표준화가 되었기 때문에 코드를 설계할 때 API를 만들 때마다 코드를 작성할 필요없이 표준 컬렉션 인터페이스를 사용하면 되기 때문에 시간을 단축할 수 있습니다.

 그 외에 객체를 보관하기 위한 메모리를 미리 정하지 않아도 되기 때문에, 상황에 따라 객체의 수를 동적으로 정할 수도 있어 프로그램의 공간적 효율을 높이는 장점을 가집니다.


3. 종류

 이전에 자료구조 파트에서 몇 가지 자료구조에 대해 작성했지만, 설명을 위해 가장 상위 항목으로 나눠서 설명과 용도를 알아보겠습니다.

3.1 List

 List에서는 직접 @Override를 통해 사용자가 정의하여 사용할 수도 있으며 대표적 구현체로는 ArrayList, LinkedList가 많이 쓰입니다. 

3.2 Map

 Map의 대표적인 구현체로 HashMap이 있습니다. 이전에 작성했었는데 Hashtable과의 차이는 key값으로 중복된 값을 저장하지 않는다는 특징이 있으며 순서를 보장하기 위해 LinkedHashmap을 사용합니다.

HashMap <key 자료형, value 자료형> hashset = new LinkedList<>();

3.3 Set

Set의 대표적 구현체로 HashSet이 있습니다. value에 대해 중복된 값을 저장하지 않는다는 특징이 있으며 HashMap과 마찬가지로 순서를 보장하지 않기 때문에 LinkedHashSet을 사용합니다.

3.4 Stack, Queue

Stack 객체는 new 키워드로 사용할 수 있으며, Queue는 JDK 1.5부터 LinkedList에 new 키워드를 적용해 사용할 수 있습니다.

Queue <자료형> queue = new LinkedList<>();

 

 

 

 

 

 

참조

더보기

 

 

'Skills > Java' 카테고리의 다른 글

Java - final keyword  (0) 2022.07.20
Java - Annotation  (0) 2022.07.19
Java - iterator  (0) 2022.07.17
Java - Character Class를 이용한 출력  (0) 2022.07.14
Java - NullPointerException  (0) 2022.07.08