Collection Framework

LEEEEEEE·2023년 9월 21일

Java

목록 보기
7/8

Collection Framework

컬렉션 프레임워크 : 데이터 군을 저장하는 클래스들을 표준화한 설계

구성 요소

  1. 인터페이스 : 다양한 컬렉션 유형을 정의하고 일반적인 동작 및 연산을 제공하는 인터페이스를 포함합니다. ex) List, Set, Map
  2. 클래스 : 컬렉션 인터페이스를 구현하는 다양한 클래스가 제공됩니다. 이러한 클래스는 구체적인 컬렉션 유형을 나타내며, 다양한 방법으로 데이터를 저장, 관리합니다. ex) ArrayList, HashSet 등
  3. 알고리즘 : 데이터 그룹을 조작하는데 사용할 수 있는 일련의 알고리즘과 메서드를 제공합니다.

주요 인터페이스 그룹

- List 인터페이스 : 순서가 있는 데이터 그룹을 나타냅니다. 중복 요소를 허용하며, 각 요소를 통해 액세스 됩니다.

컬렉션장점단점
ArrayList빠른 접근 시간배열구조이기에 중간에 요소를 삽입하거나 삭제할 때, 뒤의 모든 요소를 이동시켜야 하기에 비효율적
데이터 추가 및 삭제가 빠름(리스트의 끝에 요소를 추가하거나 삭제하는 작업등), 메모리 효율이 좋다동적배열로 구성되어 있어 크기를 동적으로 조절하는데 시간과 메모리 소모
LinkedList중간에 요소를 삽입하거나 삭제하는 작업이 빠름요소에 접근하기 위해서는 처음부터 순차적으로 접근해야하기에 빠른접근이 어려움
요소를 삽입 또는 삭제할 떄 다른 요소를 이동시키지 않아도 됨추가적인 링크 정보를 저장해야 하므로 메모리 사용량이 상대적으로 큼

- Set 인터페이스 : 순서가 없는 데이터 그룹을 나타냅니다. 중복 요소를 허용하지 않습니다.

컬렉션장점단점
HashSet빠른 검색 및 삽입HashSet은 요소의 순서를 보장하지 않는다
중복된 요소를 허용하지 않음TreeSet과 비교하면 상대적으로 빠른 검색속도가 제공되지만, 트리구조가 아니기에 정렬된 순서로 데이터를 얻을 수 없다
TreeSet정렬된 순서로 요소를 제공, 범위 검색에 좋다균형 이진 검색트리를 사용하므로 검색 및 삽입이 O(log n)의 시간 복잡도를 가짐
LinkedHashSetHashSet과 TreeSet의 장점을 조합(중복된 요소 방지 및 정렬된 순서로 제공)검색 및 삽입이 HashSet보다 느릴 수 있음

검색속도와 정렬 순서가 중요한 경우 TreeSet 또는 LinkedHashSet을, 중복된 요소를 허용하지 않아야하며 검색 및 삽입 성능이 중요한 경우 HashSet을 사용할 수 있습니다.

- Map 인터페이스 : 키-값 쌍의 데이터 그룹을 나타냅니다. 각 요소는 고유한 키와 연관된 값으로 구성됩니다. 또한 list와 set과는 달리 키와 값을 쌍으로 관리하는 구조로 독립된 인터페이스이기에 위 상속 계층도에 포함이 되지 않습니다.

컬렉션장점단점
HashMap빠른 검색 및 삽입 시간순서가 보장되지 않으며, 동기화를 지원하지 않아 멀티스레드 환경에서 안전하지 않다
TreeMap키를 기준으로 정렬된 상태 유지검색, 삽입, 삭제 시간이 O(log n)으로 HashMap보다 느릴 수 있다. 또한 정렬을 위해 추가 메모리가 필요
LinkedHashMap요소들의 삽입 순서가 유지HashMap과 마찬가지로 검색, 삽입, 삭제 시간이 O(1)이지만 순서 유지에 추가적인 비용이 들 수 있다
profile
한단계씩 성장하고 싶은 개발자

0개의 댓글