Java Collection Framework

뭐라구요·2023년 3월 27일
0

Java Collection Framework

Collection framework 란?

  • 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
    즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것.

배열은 크기가 고정되어 있지만, 컬렉션 프레임워크는 가변적인 크기를 갖는 등의 특징을 가진다. 또한 데이터 삽이브 탐색, 정렬 등 편리한 API를 다수 제공한다.

컬렉션 프레임워크를 사용했을 때 장점

  1. List, Queue, Set, Map 등의 인터페이스를 제공하고, 이를 구현하는 클래스를 제공하여 일관된 API 사용 가능
  2. 가변적인 저장 공간을 제공
  3. 자료구조, 알고리즘을 구현하기 위한 코드를 직접 작성할 필요 없이, 이미 구현된 컬렉션 클래스를 목적에 맞게 선택하여 사용하기만 하면됨
  4. 이미 검증된 API 코드이기 때문에 고도로 최적화 되어있음

구성요소 3가지

  1. 인터페이스 : 각 컬렉션을 나타내는 추상 데이터에 대한 인터페이스(LIst, Set, Map 등).
  2. 클래스 : 컬렉션 별 인터페이스 구현. 같은 컬렉션이더라도 목적에 따라 상세 구현은 달라질 수 있다.
  3. 알고리즘 : 컬렉션이 제공하는 연산, 검색, 정렬, 셔플 등에 대한 메소드.

컬렉션 프레임워크의 종류

  1. 리스트 : 인덱스 순서로 요소를 저장. 중복된 데이터 저장 가능
  2. 큐 : 데이터가 저장된 순서대로 출력되는 선입선출의 구조를 갖는 선형 자료구조
  3. 집합 : 순서가 없으며, 데이터를 중복하여 저장할 수 없음. 집합 연산을 지원
  4. 맵 : Key-value 쌍으로 데이터를 저장. 순서가 존재하지 않고 Key는 중복될 수 없다.

이 때 리스트와 집합은 모두 컬렉션 인터페이스를 상속받지만, 구조상의 차이로 인해 맵 인터페이스는 별도로 정의된다.

각 인터페이스 안에는 컬렉션 클래스들로 구성되어 있다.
예를 들어 List 인터페이스에는 ArrayList, Vector, LinkedList가 있음. 그리고 각 컬렉션 클래스 안에는 stack과 같은 구현 클래스들로 구현한다
컬렉션 프레임워크의 계층 구조는 다음과 같이 정리할 수 있다

ArraryList 예제

실행결과 : [1, 2, 3, 4, 5]

이 때 ar.remove(1)로 2를 삭제하면 결과는

실행결과 : [1, 3, 4, 5, null] 

다음과 같고 구조는 이렇다.

0개의 댓글