[JAVA] Collection(컬렉션) 이란?
2018. 7. 12. 10:43ㆍJAVA
[JAVA] Collection(컬렉션) 이란?
Collection
Java Collection 에는 List
, Map
, Set
인터페이스를 기준으로 여러 구현체가 존재한다. 이에 더해 Stack
과 Queue
인터페이스도 존재한다. 왜 이러한 Collection 을 사용하는 것일까? 그것은 다수의 Data 를 다루는데 표준화된 클래스들을 제공해주기 때문에 편하게 DataStructure 를 직접 구현하지 않고 사용할 수 있는 것이며, 배열과는 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있음으로서 프로그램의 공간적인 효율성 또한 높여준다.
- List
List
인터페이스를 직접@Override
를 통해 사용자가 정의하여 사용할 수도 있으며, 대표적인 구현체로는ArrayList
가 존재하며, 이는 기존에 있었던Vector
를 개선한 것이다. DataStructure 부분에서 설명한 Array 라고 생각하면 쉽지만 내부적으로는Red-Black tree
로 구성되어 있다. 이외에도LinkedList
등의 구현체가 존재한다. - Map
대표적인 구현체로는HashMap
이 존재한다. key-value 의 구조로 이루어져 있으며 Map 에 대한 구체적인 내용은 DataStructure 부분의 hashtable 과 일치한다. key 를 기준으로 중복된 값을 저장하지 않으며 순서를 보장하지 않는다. key 에 대해서 순서를 보장하기 위해서는LinkedHashMap
을 사용한다. - Set
대표적인 구현체로는HashSet
이 존재한다.value
에 대해서 중복된 값을 저장하지 않는다. 사실 Set 자료구조는 Map 의 key-value 구조에서 key 대신에 value 가 들어가 value 를 key 로 하는 자료구조일 뿐이다. 마찬가지로 순서를 보장하지 않으며 순서를 보장해주기 위해서는LinkedHashSet
을 사용한다. - Stack 과 Queue
Stack
객체는 직접new
키워드로 사용할 수 있으며,Queue
인터페이스는 JDK 1.5 부터LinkedList
객체를 통해new
키워드를 통해 사용할 수 있다. 자세한 부분은 DataStructure 부분의 설명을 참고하면 된다.
'JAVA' 카테고리의 다른 글
[JAVA] Generic(제너릭) 이란? (0) | 2018.07.12 |
---|---|
[JAVA] Annotation(어노테이션) 이란? (1) | 2018.07.12 |
[JAVA] 클래스, 변수명 네이밍 규칙 (0) | 2018.07.06 |
[JAVA] 객체 지향 프로그래밍이란? (0) | 2018.07.06 |
[JAVA] String vs StringBuffer vs StringBuilder 비교 (0) | 2018.07.04 |