-
[Java] 컬렉션 프레임워크 - IntroCSE/Java 2015. 9. 11. 11:52
컬렉션 프레임 워크는 여러 절로 구성되어 있습니다.
1. 컬렉션 프레임워크 소개
애플리케이션을 개발하다 보면 다수의 객체를 저장해 두고 필요할 때마다 꺼내서 사용하는 경우가 많습니다.
만약 10개의 Product 객체를 저장해 두고, 필요할 때마다 하나씩 꺼내서 이용한다고 가정해봅시다.
어떻게 Product 객체를 효율적으로 추가, 검색, 삭제할지 고민해야 되는데, 가장 간단한 방법은 배열을 사용하는 것입니다.
1234567891011Product[] array = new Product[10];array[0] = new Product("Model1");array[1] = new Product("Model2");Product model1 = array[0];Product model1 = array[1];array[0] = null;array[1] = null;cs 배열은 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 배열을 생성할 때 결정되기 때문에 불특정 다수 객체를 저장하기에는 문제가 있습니다.
물론 배열의 길이를 크게 생성하면 되지만, 이것은 좋은 방법이 될 수 없습니다.
배열의 또 다른 문제점은 객체를 삭제했을 때 해당 인덱스가 비어있게 되어 듬성듬성 null 값을 가지게 됩니다. 그렇기 때문에 새로운 객체를 저장하려면 어디가 비어 있는지 확인하는 코드가 필요합니다.
자바는 배열의 이러한 문제점을 해결하고, 널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시켜 놓았습니다.
이들을 총칭해서 컬렉션 프레임워크(Collection Framework)라 부릅니다.
컬렉션이란 사전적 의미로 요소를 수집해서 저장하는 것을 말하는데, 자바 컬렉션은 객체를 수집해서 저장하는 역할을 합니다.
프레임워크란 사용 방법을 미리 정해 놓은 라이브러리를 말합니다.
자바 컬렉션 프레임워크는 몇 가지 인터페이스를 통해서 다양한 컬렉션 클래스를 이용할 수 있도록 하고 있습니다.
컬렉션 프레임워크의 주요 인터페이스는 List, Set, Map이 있습니다.
이 인터페이스들은 컬렉션을 사용하는 방법을 정의한 것인데, 다음은 이 인터페이스로 사용 가능한 컬렉션 클래스를 보여줍니다.
ArrayList, Vector, LinkedList는 List 인터페이스를 구현한 클래스로, List 인터페이스로 사용 가능한 컬렉션입니다.
마찬가지로 HashSet, TreeSet은 Set 인터페이스를 구현한 클래스로 Set 인터페이스로 사용 가능한 컬렉션입니다.
HashMap, Hashtable, TreeMap, LinkedHashMap은 Map 인터페이스를 구현한 클래스로 Map 인터페이스로 사용 가능한 컬렉션입니다.
List와 Set은 객체를 추가, 삭제, 검색하는 방법에 많은 공통점이 있기 때문에 이 인터페이스들의 공통된 메소드들만 모아 Collection 인터페이스로 정의해 두고 있습니다.
Map은 키와 값을 하나의 쌍으로 묶어서 관리하는 구조로 되어 있어, List 및 Set과는 사용 방법이 완전 다릅니다.
다음은 각 인터페이스별로 사용할 수 있는 컬렉션의 특징을 정리한 것입니다.
* 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.
'CSE > Java' 카테고리의 다른 글
[Java] 컬렉션 프레임워크 - Map 컬렉션 (0) 2015.09.13 [Java] 컬렉션 프레임워크 - Set 컬렉션 (0) 2015.09.13 [Java] 컬렉션 프레임워크 - List (0) 2015.09.12 [Java] 스트림과 병렬 처리 - 수집, 병렬 처리 (0) 2015.09.10 [Java] 스트림과 병렬 처리 - 루핑, 매칭, 집계 (0) 2015.09.10 [Java] 스트림과 병렬처리 - 필터링, 매핑, 정렬 (0) 2015.09.09