[JAVA] Collection(컬렉션) 이란?

2018. 7. 12. 10:43JAVA

[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 부분의 설명을 참고하면 된다.