본문 바로가기

Java 공부

15장 컬렉션 프레임워크

컬렉션 : 객체를 모아둔 것

프레임워크 : 정형화된 체계적인 프로그래밍 방식

컬렉션 프레임워크 : 컬렉션을 다루기 위한 표준화된 프로그래밍 방식


컬렉션 프레임워크란,

- java.util패키지에는 자료를 다룰 수 있는 자료구조 클래스가 다수 존재한다.

  자료구조란 자료를 저장할 수 있는 구조를 말하고, 자료구조 클래스들을 컬렉션 프레임워크라고 한다.

-컬렉션 프레임워크라는 것은 다른말로 컨테이너라고도 부른다 (값을 담는 그릇이라는 의미)

-자료구조형 안에서는 객체의 주소만을 관리한다  => 데이터를 관리하는 것이 아니라 데이터가 있는 곳의 주소를 관리


배열의 문제점

-저장할 수 있는 객체 수가 배열을 생성할 때 결정

-> 불특정 다수의 객체를 저장할 수 없다.

-객체를 삭제했을 때 해당 인덱스가 비게 된다.


이 두가지의 문제점을 보완한 것이 컬렉션 프레임워크이다.

컬렉션 프레임워크는 

1. 객체들을 효율적으로 추가,삭제,검색할 수 있도록 제공되는 컬렉션 라이브러리

2. java.util 패키지에 포함되어 있다.

3. 인터페이스를 통해서 정형화된 방법(=통일된 방법)으로 사용할 수 있다.




컬렉션 프레임워크의 인터페이스는 크게 Collection Interface, Map Interface로 두종류로 나뉜다.


그중에서도 기본이 되는 인터페이스Collection interface이다.

-Collection interface는 여기에 자료가 있다라는 것을 표현

-중복 허용, 자료 저장 순서 기억x 

-Collection interface가 가지고 있는 대표적인 메소드는 add(), size(), iterator()

-Collection interface는 저장된 순서를 기억하지 못하기 때문에 "첫번째 자료 달라, 두번째 자료 달라"와 같은

 기능을 가질 수 없다. 

따라서 Collection interface는 저장된 자료를 하나씩 꺼낼 수 있는 iterator라는 인터페이스를 반환한다.

* iterator는 꺼낼것이 있는지 없는지 살펴보는 hasNext()메소드와 

자료를 하나씩 꺼낼때 사용하는 next()메소드를 가지고 있다.


다시 Collection InterfaceMap Interface로 두종류의 인터페이스로 돌아와서 설명하면 다음과 같다.

두개의 인터페이스는 데이터를 저장하는 방법이 다르다.


컬렉션 프레임워크의 종류

1) Collection Interface

-List : 배열과 유사하게 인덱스로 관리 

-Set : 집합과 유사     ex)구슬 주머니와 유사

-Queue : 자료구조 Queue

2) Map Interface

-Key와 Value의 쌍으로 관리


List, Set, Queue는 공통된 부분이 많기 때문에  1)Collection Interface에 정의해놓고 상속하여 만들어졌고

2)Map Interface는 별도로 만들어졌다.

List, Set, Queue, Map은 interface이며 각 구현클래스의 객체를 생성하여 이용할 수 있다.


List :  순서를 유지하고 저장  , 중복 저장 가능

*구현 클래스 : ArrayList , Vector , LinkedList

Set :  순서 유지하지 않고 저장 , 중복 저장 안됨

*구현 클래스 : HashSet , TreeSet

Queue : 자료구조 Queue의 형태로 FIFO

*구현 클래스 : LinkedList, PriorityQueue

Map : 키와 값의 쌍으로 저장 ,  키는 중복 저장 안됨

*구현 클래스 : HashMap, Hashtable, TreeMap, Properties



본 포스팅은 이것은 자바다 책을 참고하여 작성하였습니다.

'Java 공부' 카테고리의 다른 글

15장 List 컬렉션  (0) 2019.06.05
14장 람다식  (0) 2019.05.31
13장 제네릭(Generic)(8)_확인문제  (0) 2019.05.27
13장 제네릭(Generic)(7)_정리  (0) 2019.05.26
13장 제네릭(Generic)(6)_제네릭 타입의 상속과 구현  (0) 2019.05.25