Collection

Collection이란?

  • List, Map, Set 인터페이스를 기준으로 여러 구현체가 존재

  • 사용하는 이유

    • 다수의 Data 를 다루는데 표준화된 클래스들을 제공해주기 때문에 DataStructure 를 직접 구현하지 않고 편하게 사용할 수 있기 때문

    • 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다

      • 프로그램의 공간적 효율성 또한 높여준다

Collection의 종류

List

  • List 인터페이스를 직접 @Override를 통해 사용자가 정의하여 사용할 수도 있으며, 대표적인 구현체로는 ArrayList가 존재한다.

    • 이는 기존에 있었던 Vector를 개선한 것이다

  • LinkedList

    • 각 node가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조

    • 데이터를 담고 있는 node들이 연결되어 있는데, node의 포인터가 다음이나 이전 node와의 연결을 담당한다

    • 장점

      • 늘어선 node의 중간지점에서도 자료의 추가/삭제가 O(1)의 시간에 가능하다는 장점을 갖는다

    • 단점

      • 배열이나 트리 구조와는 다르게 특정 위치의 데이터를 검색하는데는 O(n) 의 시간이 걸린다는 단점이 있다

Map

  • 대표적인 구현체로 HashMap이 존재한다

  • key-value 의 구조로 이루어져 있으며 Map 에 대한 구체적인 내용은 DataStructure 부분의 hashtable 과 일치한다

  • key 를 기준으로 중복된 값을 저장하지 않으며 순서를 보장하지 않는다

  • key 에 대해서 순서를 보장하기 위해서는 LinkedHashMap을 사용한다

Set

  • 대표적인 구현체로 HashSet이 존재한다.

  • value에 대해서 중복된 값을 저장하지 않는다

  • 사실 Set 자료구조는 Map 의 key-value 구조에서 key 대신에 value 가 들어가 value 를 key 로 하는 자료구조일 뿐이다

  • 마찬가지로 순서를 보장하지 않으며 순서를 보장해주기 위해서는 LinkedHashSet을 사용한다

Last updated