컬렉션 프레임워크(collection framework)

권태형·2023년 3월 30일
0

지식정리

목록 보기
48/72
post-custom-banner

😀이번 포스팅은 스터디그룹에서 주제로 "List, Set, Map, HashMap을 비교해서 설명해보자"였는데, 얼핏보면 일반적인 비선형 자료구조를 이야기하는거 같지만, 그렇게 비교하게 된다면 "List, Set, Map, HashTable"일텐데 마지막 "HashMap" 걸려서 검색해보니 JAVA 컬렉션 프레임워크에서 제공하는 자료구조라고 한다. JAVA는 아직 안 써봤으니 가볍게 알아보도록 하자

컬렉션 프레임워크(collection framework)란?

컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합

자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 모아놓은 것을 컬렉션 프레임워크라고 한다.

컬렉션 프레임워크 구성

컬렉션 프레임워크는 아래의 3가지 요소로 구성된다.

  • 인터페이스 (Interfaces)
    각 컬렉션을 나타내는 추상 데이터에 대한 인터페이스 (List, Set, Map 등).
    클래스는 이 인터페이스를 구현하는 방식으로 작성되었기 때문에 상세 동작은 달라도 일관된 조작법으로 사용할 수 있다.

  • 클래스 (Classes)
    컬렉션 별 인터페이스의 구현 (Implementation).
    위에서 언급했듯, 같은 List 컬렉션이더라도 목적에 따라 ArrayList, LinkedList 등으로 상세 구현이 달라질 수 있다.

  • 알고리즘 (Algorithms)
    컬렉션이 제공하는 연산, 검색, 정렬, 셔플 (Shuffle) 등에 대한 메소드.

구성 요소의 상속관계와 계층

검정색은 인터페이스, 파랑색은 클래스, 실선 화살표는 상속, 점선 화살표는 구현을 의미한다.

대표적으로 List , Queue , Set , Map 인터페이스로 구성되어 있으며, 세부적으로 여러 클래스가 해당 인터페이스를 구현하거나, 다른 인터페이스가 상속받는 구조로 되어있다.


List, Set, Map, HashMap의 비교

List, Set, Map, HashMap 네가지는 컬렉션 프레임워크에서 모두 제공하기 때문에 공통점이 존재하고, 각자의 특징이 따로 있어 차이점 또한 존재한다. 공통점과 차이점을 알아보자

공통점

  1. 모두 데이터를 저장하고 관리하는 자료구조이다.

  2. 모두 제네릭 클래스로 구현되어 있어, 타입 안정성을 보장한다.

  3. 모두 자바 컬렉션 프레임워크의 일부이며, 표준 라이브러리에서 제공한다.

차이점

ListSetMapHashMap
구현인터페이스인터페이스인터페이스클래스
중복허용불가Key 불가, Value 허용Key 불가, Value 허용
순서유지유지불가Key의 순서는 유지불가, Value의 순서는 유지유지불가
검색가능가능Key와 Value 따로 검색 가능Key와 Value 따로 검색 가능
삽입가능가능Key-Value 쌍으로 삽입 가능Key-Value 쌍으로 삽입 가능
삭제가능가능Key로 삭제 가능, Key-Value 쌍으로 삭제 가능Key로 삭제 가능, Key-Value 쌍으로 삭제 가능
확장성크기 조정 불가크기 조정 불가크기 조정 불가크기 조정 가능
성능느림중간중간빠름

가장 눈에 띄는 차이의 항목은 중복의 가능성순서 유무이다.

List는 중복을 허용하고, Set은 허용하지 않는다, Map과HashMap은 값에 대해서만 허용한다.

List는 순서가 있고, Set은 없다, Map은 값에만 순서가 있으나, 클래스인 HashMap은 순서가 없다.


참고자료(출처)
TPC School JAVA 컬렉션 프레임워크의 개념
hudi.blog 포스팅 JAVA Collection Framework (1) - 컬렉션 프레임워크란?
깃허브io Hyun-Taek Hong 포스팅 [Java 25] 자바 - 컬렉션 프레임워크 (1)

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.
post-custom-banner

0개의 댓글