본문 바로가기

국비

11.1 국비학원 20일차 (컬렉션 : List, Set)

  • 컬렉션

         - 자바에서 제공하는 자료구조를 담당하는 프레임워크

         - 배열에 데이터를 담아 관리하는 방법에서 자료구조를 적용하여 좀 더 효율적으로 데이터를 관리할 수 있도록

            다양한 기능 제공

         - 구현된 자료구조 종류에 따라 List, Set, Map 등으로 분류하여 제공

 

  • 배열 vs 컬렉션

          배열 특징       

           - 한 번 크기를 정하면 변경할 수 없다.

           - 배열에 저장된 데이터의 추가/수정/삭제 과정이 불편하다.

           - 한 가지 타입에 대해서만 저장할 수 있다. (but, 다형성 사용하면 여러타입 저장 가능)

 

          컬렉션 특징

           - 언제든 크기를 늘리거나 줄일 수 있다.

           - 컬렉션에 저장된 데이터의 추가/수정/삭제 등의 과정은 기본 제공되는 메서드로 처리 가능하다.

           - 여러 타입에 대한 데이터 저장이 가능하다.

 

  • List 계열 컬렉션 (배열과 거의 유사)

         - 데이터를 순차적으로 나열한 자료구조로 되어 있으며, 인덱스로 관리한다.

         - 중복 데이터 저장 가능

         - 구현 클래스로는 ArrayList, Vector, LinkedList 가 있다.    

 

        1. ArrayList

              - List 의 구현체로 초기 저장 용량 10 에서 데이터가 추가/삭제 될 때마다 자동으로 늘어나거나 줄어들면서 관리

              - Thread Safe 기능을 제공하지 않는다

       

        2. Vector

              - ArrayList 와 동일하며, Thread Safe 기능을 제공한다.

       

        3. LinkedList

              - 특정 위치에 데이터를 추가하거나 제거 하면 앞/뒤 노드의 링크 정보만 변경하는 형태로 동작하며 이로 인해

                 빈번한 데이터의 추가/수정에 가장 우수한 성능을 갖는다.

            * 사용자 정의 객체를 리스트에 사용할 수도 있다.   

사용자 정의 객체 Subject

  • Set 계열 컬렉션

         - 저장 순서를 유지하지 않는다.

         - 중복 허용 x

         - 구현 클래스로 HashSet, LinkedHashSet, TreeSet 등이 있다.

 

        1. HashSet

              - 객체를 저장할 때 hash 함수를 사용하여 처리 속도가 빠르다.

              - 동일 객체 뿐 아니라 동등 객체도 중복하여 저장하지 않는다 (객체 주소, 값 둘 다 중복 허용x)

       

        2. LinkedHashSet

              - HashSet 과 동일하지만 Set 에 추가되는 데이터들의 순서가 유지됨

       

        3. TreeSet

              - 검색 기능을 강화한 컬렉션으로 계층 구조를 활용해 이진 트리 자료구조로 구현되어 있다.

 

        # 위의 List 컬렉션과 메서드 사용방식이 동일하나 Set 컬렉션에서는 수정 메서드가 따로 존재하지 않는다.

컬렉션 변경 방법