[Java] Jave 의 컬렉션 프레임워크는 무엇일까?

2025. 4. 23. 18:17·JAVA

자바의 컬렉션 프레임워크는 데이터를 효율적이고 일관된 방식으로 저장, 검색, 수정, 삭제할 수 있도록 도와주는 자료구조 클래스와 인터페이스들의 집합입니다.

프로그래밍하면서 데이터를 모으고, 정렬하고, 삭제하고, 다시 꺼내 쓰는 작업을 자주 하게 되는데, 이럴 때 필요한 기능들을 표준화된 방식으로 제공해주는 것이 바로 컬렉션 프레임워크입니다.

데이터 관련해서 수정하고 작업한다? 그러면 많이 사용했던 클래스들이 있죠?

대표적인 컬렉션 인터페이스로는 List, Set, Map, 그리고 이를 구현한 ArrayList, HashSet, HashMap 등이 있습니다.

 

자바에서의 프레임워크는 뼈대입니다. 우리가 사용했던 스프링도 이 프레임워크에 속하죠.

개발자가 필요한 기능만 추가하거나 수정해서 쓸 수 있도록 재사용 가능한 뼈대입니다.

 

컬렉션 프레임워크도 이와 마찬가지로 데이터를 저장하고 다루는 기본 구조를 제공하고, 개발자가 이걸 편하게 사용하도록 미리

만들어진 인터페이스와, 그걸 구현하는 클래스들의 집합입니다.

 

프레임워크는 컬렉션 프레임워크보다 더 넓은 개념이라고 생각하면 되겠습니다.

특정 목적을 위해 설계된 뼈대입니다.

컬렉션 프레임워크는 위의 프레임워크보다 더 좁은 개념입니다. 다양한 데이터를 편리하게 다룰 수 있게 도와주는 기능들의 

모음집 이라고 생각하면 됩니다. 차이가 크죠? 별로 헷갈릴 개념도 아닙니다.

 

이제 컬렉션 프레임워크에 대해 조금 더 깊게 알아보겠습니다.

먼저 컬렉션 프레임워크에는 인터페이스들이 존재합니다.

대표적으로 3개가 있는데 위 사진을 보면 알 수 있듯이 Set, List, Queue 가 존재합니다.

그리고 하단에 있는 클래스들은 위의 인터페이스들을 구현하는 구현 클래스 입니다.

 

ArrayList 를 사용하는 부분을 클릭해서 들어가보면 이런식으로 List 를 구현하는 코드들이 있습니다. 이것은 자바에서 자체적으로 작성된 코드로 우리는 이렇게 작성된 코드 덕분에 ArrayList를 쉽게 사용할 수 있는거죠.

자바에서는 ArrayList와 같은 자료구조를 이미 자체적으로 구현해 놓았고, 우리는 이 구현된 클래스를 그냥 사용하기만 하면 됩니다. ArrayList 클래스는 이미 필요한 모든 메서드와 기능이 포함되어 있기 때문에, 우리가 구현할 필요 없이 편리하게 데이터를 저장하고 관리할 수 있는 것입니다.

 

자바의 ArrayList와 같은 클래스들은 이미 자바 개발자들이 구현한 기능을 제공하는 도구입니다. 그래서 우리는 이 도구들을 그냥 사용하면 되고, 내부 구현을 신경쓰지 않아도 됩니다. 이를 통해 개발 속도를 높이고, 복잡도를 줄이며, 코드를 효율적으로 작성할 수 있습니다.

 

이제 여러가지 인터페이스와 이를 구현하는 클래스들의 특징을 표로 알아보겠습니다.

항목 List ArrayList
타입 인터페이스 클래스
용도 추상적인 List의 동작 정의 (구체적인 구현 없음) List를 구현한 구체적인 클래스
사용 목적 다양한 리스트 구현 클래스의 공통된 메서드를 정의 List 인터페이스를 구현한 동적 배열 기반 클래스
데이터 구조 정의되지 않음 동적 배열(Dynamic Array)
구현 클래스 ArrayList, LinkedList, Vector 등 ArrayList는 하나의 구현체
성능 성능을 정의하지 않음 랜덤 액세스가 빠르지만, 중간 삽입/삭제 성능이 떨어짐

 

 

항목 Set (인터페이스) HashSet (클래스) LinkedHashSet (클래스) TreeSet (클래스)
설명 중복되지 않는 원소들의 집합을 정의하는 인터페이스 Set 인터페이스를 구현한 해시 기반 집합 HashSet을 확장한 클래스로 삽입 순서 유지 정렬된 집합을 제공하는 Set 구현 클래스
특징 순서 없음, 중복 허용하지 않음 해시 테이블을 사용, 빠른 검색/추가/삭제 성능 삽입된 순서대로 요소를 유지 요소들이 정렬된 상태로 저장
중복 허용 중복된 원소를 허용하지 않음 중복을 허용하지 않음 중복을 허용하지 않음 중복을 허용하지 않음
요소 순서 순서가 보장되지 않음 순서가 보장되지 않음 삽입된 순서대로 순서가 유지됨 요소들이 자연 순서나 정렬 기준에 따라 정렬됨
성능 요소의 추가/삭제/조회가 O(1) 평균 시간 복잡도 해시 기반으로 빠름 해시 기반이지만 삽입 순서 유지에 따른 오버헤드 트리 기반으로 로그 시간 복잡도 (O(log n))
주요 메서드 add(), remove(), contains(), size() add(), remove(), contains(), size() add(), remove(), contains(), size() add(), remove(), contains(), size(), first(), last()
구현 방식 추상적인 인터페이스 HashMap을 내부적으로 사용 HashMap과 삽입 순서 유지 기능 결합 NavigableMap을 사용한 트리 기반 구현

'JAVA' 카테고리의 다른 글

POJO란 무엇일까?  (1) 2025.05.21
[Java] Java 에서는 객체 복제를 어떻게 할까?  (0) 2025.04.26
[Java] Generics은 무엇이고 왜 사용할까?  (0) 2025.04.22
[Java] 인터페이스를 사용하는 이유는 무엇일까?  (0) 2025.04.21
[Java] GC(가비지 컬렉션)이란?  (1) 2025.04.21
'JAVA' 카테고리의 다른 글
  • POJO란 무엇일까?
  • [Java] Java 에서는 객체 복제를 어떻게 할까?
  • [Java] Generics은 무엇이고 왜 사용할까?
  • [Java] 인터페이스를 사용하는 이유는 무엇일까?
동준1234
동준1234
공부 기록
  • 동준1234
    dongjundev
    동준1234
  • 전체
    오늘
    어제
  • GitHub
    • 분류 전체보기 (150)
      • 일상 (1)
      • 복습 및 회고록 (26)
      • Spring (17)
      • JAVA (32)
      • kubernetes (1)
      • Front-End (13)
      • Server (11)
      • SQL (20)
        • JDBC (1)
      • 자격증 (7)
        • 정보처리기사 필기 준비 (6)
        • 정보처리기사 실기 준비 (0)
        • SQLD (1)
      • project (18)
        • 백준 및 코딩테스트 공부 (6)
        • 대학교 캡스톤 디자인 (6)
        • 4학년 캡스톤 디자인 및 전시회 (3)
      • 네트워크 (3)
      • AI 머신러닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    프론트
    개발자
    jQuery
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
동준1234
[Java] Jave 의 컬렉션 프레임워크는 무엇일까?
상단으로

티스토리툴바