안루피취뽀일기

컬렉션 프레임워크(Collection Framework) 본문

Java

컬렉션 프레임워크(Collection Framework)

안루피 2023. 9. 16. 17:18
728x90

컬렉션 프레임워크(Collection Framework) 란?

 

흔히 프로그램 개발을 건물 짓는 일에 비유한다. 원하는 건물을 지으려면 구조를 잘 잡아야 하듯이 프로그램을 개발할 때도 사용하는 자료를 어떤 구조로 관리할 것인지가 중요하다. 그래야 프로그램을 개발할 때도 사용하는 자료를 어떤 구조로 관리할 것인지가 중요하다. 그래야 프로그램의 기능을 효과적으로 구현할 수 있기 때문이다. 이때 사용하는 것이 자료 구조(data structure)이다. 자료 구조는 프로그램 실행 중 메모리에 자료를 유지 관리하기 위해 사용한다. 자바에서는 필요한 자료구조를 미리 구현하여 java.util 패키지에서 사용하고 있는데, 이를 컬렉션 프레임워크(collection framework)라고 한다. 자료 구조는 개발자가 필요할 때 직접 만들어 사용할 수도 있다. 하지만 자바 컬렉션 프레임워크를 사용하면 직접 개발하는 수고를 덜 수 있을 뿐만 아니라 잘 만들어진 자료 구조 클래스를 활용할 수 있다. 

 

자바가 라이브러리를 어떻게 제공하는지, 또 그 라이브러리를 어떻게 사용할 수 있는지 살펴보자.

 

자바 컬렉션 프레임뭐크에는 여러 인터페이스가 정의되어 있고, 그 인터페이스를 구현한 클래스가 있다. 각 인터페이스의 특성과 클래스 활용법을 알면 개발 목적에 맞게 잘 활용할 수 있다. 

 

 

 

컬렉션 프레임워크의 전체 구조는 Collection 인터페이스 Map 인터페이스 기반으로 이루어져 있다. Collection 인터페이스는 하나의 자료를 모아서 관리하는데 필요한 기능을 제공하고, Map 인터페이스는 쌍(pair)로 된 자료를 모아서 관리하는 데 유용한 기능을 제공한다. 각 인터페이스를 구현한 클래스는 위 그림에 있는 것보다 많다. 프로그램 개발에 많이 사용되고 알아 두어야 하는 클래스 위주로 알아보도록 하자.

 

Collection 인터페이스

 

Collection 인터페이스 하위에 List 인터페이스Set 인터페이스가 있다. List를 구현한 클래스는 순차적인 자료를 관리하는데 사용하는 클래스이고, Set 인터페이스는 우리가 수학 시간에 배운 집합을 생각하면 된다. 집합은 순서와 상관없이 중복을 허용하지 않는다. 따라서 Set 계열의 클래스는 아이디처럼 중복되지 않는 객체를 다루는데 사용한다.

 

 

 

Collection 인터페이스에 선언된 메서드 중 자주 사용하는 메서드는 다음과 같다.

 

 

add()나 remove() 메서드가 boolean형으로 결과 값을 반환하는 것은 객체가 잘 추가되었는지, 컬렉션에서 객체가 잘제거되었는지 여부를 반환하는 것이다. Collection 인터페이스를 구현한 클래스는 위 메서드를 모두 제공한다.

 

Map 인터페이스

 

Map 인터페이스는 하나가 아닌 쌍(Pair)으로 되어 있는 자료를 관리하는 메서드들이 선언되어 있다. Key-value 쌍이라고 표현하는데 이때 키 값은 중복될 수 없다. 학번과 학생 이름처럼 쌍으로 되어 있는 자료를 관리할 때 사용하면 편리하다. Map 인터페이스를 구현한 클래스 중 대표 클래스는 아래와 같다.

 

 

예를 들어 어떤 사람의 정보가 있다고 할 때 그냥 나열할 수도 있지만 아래표처럼 쓸 수도 있다. 이때 이름, 나이 등의 값을 key라고 하고, 그에 대응하는 홍길동, 31세 등의 값을 value라고 한다. 그리고 이러한 자료를 key-value 쌍이라고 한다. 여기에서 key값은 중복될 수 없다. 다시 말해, '이름'이라는 key는 유일하게 딱 하나 있다는 것이다. 이에 대응하는 value값은 여러 개일 수도 있고 중복될 수도 있다. 수영이라는 value가 취미이기도 하고 특기일 수도 있기 때문이다. 이렇게 key-value 쌍으로 된 자료를 관리할 때 Map을 유용하게 사용할 수 있다.

 

 

Map은 기본적으로 검색용 자료 구조이다. 즉 어떤 key값을 알고 있을 때 value를 찾기 위한 자료 구조이다. Map 인터페이스에 선언된 메서드 중 주요 메서드는 다음과 같다. 

 

 

 

728x90