프로그래밍 언어 활용/JAVA

컬렉션 프레임워크 : 각론

프린이8549 2024. 2. 5. 16:58

0. 들어가기에 앞서

오늘은 컬렉션 프레임워크 중 하나인 ArrayList 클래스에 대해서 살펴보고자 한다.

 

하지만, 위 문장에서 우리는 "ArrayList"를 마주하기도 전에 "컬렉션", "프레임워크"에서부터 숨이 턱턱 막히기 시작할 것이다. 따라서 ArrayList 를 살펴보기에 앞서, 컬렉션과 프레임워크에 대해서 짧게나마 알아보고자 한다.

 

1. 컬렉션 프레임워크

컬렉션 프레임워크란, 자료 구조 개념이 내장되어 있는 클래스이며 자바에서 제공하는 "자료구조"를 제공하는 "프레임워크"이다.

그렇다면 자료구조와 프레임워크는 무엇일까? 먼저 자료구조란 다음과 같다.

 

1.1. 자료 구조(data structure)

  방대한 데이터를 보다 효율적으로 관리할 수 있도록 도와주는 개념으로 프로그램 실행 중 메모리에 자료를 유지, 관리하기 위해 사용한다.

  • 이때 관리라 함은 추가, 삭제, 조회, 정렬, 수정 등을 의미한다.

 프로그램 개발을 건축에 비유하자면 튼튼한 건물을 짓기 위해서는 건물의 구조를 구축해야하는 것과 같이,  효과적인 프로그램 개발을 위해서는 사용하는 자료를 어떤 구조로 관리할 것인가가 상당히 중요하다고 할 수 있다. 

 자료 구조가 어떤 뉘앙스인지 이해했다면, "프레임워크"란 무엇일까?

 

1.2. 프레임워크(frame work)

 프레임워크는 문자 그대로 '구조화된 틀'을 의미한다. 

우리가 흔히 치킨을 시켜먹을 때 프랜차이즈 치킨의 경우, 어느 지역의 어느 지점에서 주문하더라도 동일한 메뉴라면 거의 같은 맛의 치킨을 먹을 수 있다. 이는 해당 치킨의 닭, 튀김가루, 소스, 튀김 소요 시간 등 치킨을 조리하는 공정이 해당 기업의 구조화된 틀 아래에서 획일화되어있기 때문이다.

 애플, 구글 등 많은 기업들이 자사의 프레임워크를 제공하며, 개발자는 해당 틀을 활용하여 본인의 애플리케이션을 개발하는데 큰 도움을 얻을 수 있다.

 

1.3. 자바 컬렉션 프레임워크

 따라서 자바 컬렉션 프레임워크는 자바에서 자료 구조를 미리 구현하여 제공하고 있는 프레임워크로 이해하면 될 것이며, 자바는 java.util 패키지에서 이를 제공하여 많은 개발자들의 수고로움을 덜어주고 있다.

 본 글에서 다룰 ArrayList 클래스도 해당 컬렉션 프레임워크의 일종이며 이외에도 많은 인터페이스와 이를 구현한 클래스들이 존재한다.

 

1.4. 컬렉션의 장점 : 배열과의 비교

  컬렉션 배열
크기 지정 1. 크기 제약 없음. 크기를 지정할 필요가 없음
2. 알아서 사이즈를 늘려줌
1. 크기 지정해야 함.
2. 일단 크기를 지정하면 변경할 수 없음
데이터 관리 1. 중간에 값을 추가하거나 삭제하는 경우 알고리즘을 직접 작성할 필요없이 메소드 호출만으로 내부적으로 진행됨.  1. 새로운 값을 추가하고자 할 시 새로운 크기의 배열 만든 후 기존의 값을 전부 복사해야 함.
 2.  배열 중간 위치에 값을 추가하거나 삭제하는 경우 값을 매번 챙겨주는 복잡한 코드를 직접 작성해야 함
여러 타입 보관 1. 한 공간에 여러 타입의 데이터 저장 가능(객체일 경우)
2. 제네릭 통해 한 타입만 담도록 제한 가능
 1. 한 공간에 한 타입의 데이터들만 저장 가능

 

 방대한 데이터들을 보관하고 조회만 할 경우 배열을 많이 사용하나

 데이터들을 보관, 추가, 삭제 등의 과정들이 빈번할 경우 컬렉션을 많이 사용한다.

 

1.5. 컬렉션의 주요 인터페이스

  컬렉션 프레임워크에는 여러 인터페이스가 정의되어 있고 그 인터페이스를 구현한 여러 클래스가 존재한다.

  이때 어떤 인터페이스를 구현하는지에 따라 사용 방법과 특성이 결정된다.

 

 컬렉션 프레임워크의 전체 구조는 Collection 인터페이스와 Map 인터페이스 기반으로 이루어져있으며 대략적인 구조는 다음과 같다.

 

 

Collection 인터페이스는 하나의 자료를 모아서 관리하는 데 필요한 기능을 제공하고

 

Map 인터페이스는 쌍(pair)으로 된 자료들을 관리하는 데 유용한 기능을 제공한다. 

 

이상으로 컬렉션 프레임워크에 대해서 살펴보았으며 다음 장부터는 각각의 인터페이스 및 이를 구현한 클래스에 대해 소개할 것이다.