본문 바로가기

CS 전공지식

24.02.02 Java 의 Collection Framework 란?

 

1. JCF (Java Collection Framework)

    - Java 에서 Collection 이란 데이터의 집합, 그룹을 의미

    - JCF 는 객체들을 한 곳에 모아 관리하고 편하게 사용하기 위해 제공되는 환경이며, 데이터, 자료구조인

      컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공

    - Collection 에는 List, Map, Set, Stack, Queue 와 같은 것들이 있다

 

  1) Collection 을 사용하는 이유

       - 다수의 Data 를 다루는데 표준화된 클래스를 제공해주기 때문에 자료구조를 직접 구현하지 않고 편하게

         사용할 수 있기 때문

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

         동적으로 정하여 프로그램의 공간적인 효율성을 높여준다

 

2. JCF (Java Collection Framework) 상속구조

    - 인터페이스는 크레 List, Set, Queue 로 3가지 상위 인터페이스로 분류할 수 있다

    - Map 은 Collection 인터페이스를 상속바고 있지 않지만 Collection 으로 분류됨

 

  1) List

       - List 인터페이스를 직접 @Override 를 통해 사용자가 정의하여 사용할수 있다

       - 대표적인 구현체로는 ArrayList 와 LinkedList 가 있다

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

 

     (1) ArrayList

           - Java 의 Vector 를 개선한 배열로 구현된 List 즉, 데이터가 저장된 순서가 같다

           - 사실상 배열과 같은 자료구조이기 때문에 List 의 연산 자체의 수행시간 속도는 배열과 같다

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

     (2) LinkedList

           - 다음 노드의 주소를 기억하고 있는 List 로 배열에 비해 삽입과 삭제가 간단

           - 탐색의 경우 첫번째 노드부터 탐색하기 때문에 속도가 느림

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

           - Stack, Queue, 양방향 큐등을 만들기 위한 용도로 사용됨

 

  2) Map

       - 대표적인 구현체료 HashMap 이 존재

       - Key(키) - Value(값) 쌍으로 이루어진 데이터의 집합으로 데이터 순서를 보장하지 않으며 Key 의 중복을

         허용하지 않으나 Value 의 중복은 허용

       - Key 에 대한 순서를 보장하기 위해서는 LinkedHashMap 을 사용

 

     (1) HashMap

           - 가장 일반적으로 사용하는 Map

           - Key 값에 해시 함수를 적용하여 나온 Index 에 Value 를 저장하는데 중복과 순서가 허용되지 않으며

             null 값이 올 수 있다

     (2) HashTable

           - HashMap 보다는 느리지만 동기화를 지원한다

           - HashMap 과 다른점은 Key 값 혹은 Value 값에 null 을 넣으면 컴파일 에러 발생

     (3) TreeMap

           - Red-Black Tree 자료구조를 이용한 Map

           - Tree 구조이기에 어느 정도 순서를 보장함

           - 정렬된 순서대로 Key, Value 를 저장하여 검색이 빠름

 

  3) Set

       - 대표적인 구현체료 HashSet 이 존재

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

       - Set 자료구조는 Map 의 Key - Value 구조에서 Key 대신 Value 가 들어가 Value 를 Key 로 하는 자료구조이다

       - Map 과 같이 Set 도 순서를 보장하지 않으며 순서를 보장하기 위해서는 LinkedHashSet 을 사용

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

 

     (1) HashSet

           - HashMap 에서 Key 값이 없는 자료형 집합

           - Value 가 포함되어 있는지 아닌지만 관심이 있다

           - 순서를 보장하지 않으며, 중복값을 허용하지 않는다

           - 가장 빠른 임의 접근 속도이고, 순서를 예측할 수 없다

     (2) TreeSet

           - Red-Black Tree 자료구조를 사용한 Set

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

 

  4) Stack

       - 직접 new 연산자로 객체를 생성하여 사용가능

 

  5) Queue

       - LinkedList 에 new 연산자로 객체를 생성함으로써 사용가능

 

          

 

'CS 전공지식' 카테고리의 다른 글

24.02.07 Java 관련 2  (1) 2024.02.07
24.02.06 Java 관련 1  (1) 2024.02.06
24.02.01 JDK, JRE 란?  (0) 2024.02.01
24.01.31 ORM  (2) 2024.01.31
24.01.30 JVM 과 바이트 코드  (1) 2024.01.30