ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 컬렉션(Collection) 이란?
    JAVA 2020. 11. 30. 19:41

    JAVA 에서 컬렉션(Collection) 이란 데이터의 집합, 그룹을 의미한다.

     

    JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렉션과 이를 구현하는 

    클래스를 정의하는 인터페이스를 제공한다.

     

     

     

     

    자바에서 자료구조 유형은 다음과 같다.

    -순서가 있는 목록인 List형

    -순서가 중요하지 않은 목록인 Set형

    -먼저 들어온 것이 먼저 나가는 Queue형

    -KEY_VALUE의 형태로 저장되는 Map형

     

    배열과의 차이점은 정적 메모리 할당이 아닌 동적 메모리 할당을 하게 된다.

    즉, new int[4]을 하면 4개 공간밖에 못쓰고 미리 선언을 통해 4개의 공간을 만들어야 하지만,

    Collection은 공간이 필요한 만큼 추가될 수 있다.

     

     

    위의 그림을 보면 컬렉션은 결국 인터페이스 이고 아래에서 구현부들이 받아 구현하고 있음을 알 수 있다.

     

     

     

     

     

     

     

                        Collection 인터페이스에 선언된 주요 메소드

     

     

    1.Set 인터페이스 

    순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.

     

    • HashSet

           - 가장빠른 임의 접근 속도

           - 순서를 예측할 수 없음

     

     

    • TreeSet

          -정렬방법을 지정할 수 있음

     

     

     

    HashSet vs TreeSet 

     

    HashSet과 TreeSet 모두 중복을 허용하지 않고 순서가 없는 컬렉션

     

    1.구현 방식

     

    -HashSet은 해싱을 이용하여 구현

    -TreeSet은 이진탐색트리를 이용하여 구현

     

    2.속도 비교

    -HashSet > TreeSet

    -해싱이 이진탐색트리보다 빠르다.

     

    3.정렬 기능

    -HashSet < TreeSet

    -이진 탐색 트리를 이용했기 때문에 데이터 정렬이 가능

     

    성능

    HashSet > TreeSet > LinkedHashSet

     

    2.List 인터페이스 

    순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.

    • LinkedList

         - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용

         - 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임

     

    • Vector

      -과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화 처리가 일어나 비교적 성능이

        좋지않고 무거워 잘 쓰이지 않음
    • ArrayList

      -단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남





      3. Map 인터페이스

     

    키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로,

    순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.

    • Hashtable
      - HashMap보다는 느리지만 동기화 지원
      - null불가
    • HashMap
      - 중복과 순서가 허용되지 않으며 null값이 올 수 있다.
    • TreeMap
      - 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름

     

     

     

     

     

     

    728x90
    반응형

    'JAVA' 카테고리의 다른 글

    [Java]JDK와 JRE  (0) 2021.05.30
    Java Map 컬렉션(Collection) 개념  (0) 2021.05.26
    리스트(List)  (1) 2020.11.30
    Scanner (입력)  (1) 2020.11.25
    [JAVA] this의 의미  (2) 2020.11.13

    댓글

Designed by Tistory.