2016년 7월 19일 화요일

Java Programming [30강] 컬렉션의 종류와 특징 및 컬렉션을 관리하는 도구! 자료구조(프레임워크)란?

엄청난 양의 데이터를 효율적으로 모아놓고 관리하자는 개념에서 컬렉션이 탄생합니다. 동일한 자료형의 데이터를 하나로 묶은 것은 배열이므로 배열은 곧 컬렉션입니다.

그런데 이 컬렉션의 단점은 한 번 만들어 놓으면 이후에 데이터의 추가, 삭제가 어렵다는 점입니다. 하지만 데이터를 정량화해 두었기 때문에 데이터에 접근하는 속도가 일정하죠. 가졍 길이가 10짜리인 in형 배열이라면 0번 요소에 접근하는데 걸리는 시간과 9번 요소에 접근하는데 걸리는 시간은 동일합니다. 

어쨌든 다량의 데이터를 정량화해 모아놓으면 접근이 편리하기 때문에 컬렉션을 만들어 사용하지만 데이터를 추가 삭제하는게 불편하다는 단점이 생기는데 이 단점을 자료구조라는 틀을 만들어 놓고 용이하게 만듭니다. 이때 이 자료구조라는 틀이 바로 프레임워크입니다. 프레임워크는 데이터를 관리하는 일종의 도구나 장비같은 역할을 수행한다고 보시면 됩니다.

그럼 아까 데이터를 모아놓고 관리하자는 측면에서 탄생한 컬렉션의 종류에는 무엇이 있을까요?

Collection
(인터페이스)
List                                         Set
(배열의 확장판)               (자료의 집합)

<클래스>
Vector                                Hashset
Stack                                           
ArrayList                                       

제가 컬렉션 밑에 인터페이스라고 적었습니다. 즉, List와 Set은 인터페이스입니다. 인터페이스는 혼자서는 객체를 선언해서 사용될 수 없죠. 즉, List와 Set을 사용하기 위해서는 Vector, Hashset 등의 클래스를 List와 Set인터페이스로 지원해주고 그 클래스를 객체선언해 사용해야 합니다. 즉, Vector나 Stack등의 클래스가 List인터페이스 지원을 받은 클래스 들이고 Hashset은 Set인터페이스의 지원을 받은 클래스인 것입니다. 예를들면, Vector클래스를 객체화하고 List계열 인터페이스에 다형적으로 대입하는 것이 가능합니다.

Vector, Stack, ArrayList는 Set의 지원을 받을 수 없습니다. 마찬가지로 Hashset도 List의 지원을 받을 수 없습니다. 또, Vector, Stack, ArrayList끼리는 형제관계이기 때문에 서로 다형적 대입이 불가능합니다. 다형적 대입이  가능한 사이는 직계 (부모, 조상)이기 때문입니다.

이 밖에도 Map자료구조라고 해서 Dictionary구조, 또는 pair구조, 쌍구조를 갖는 자료구조가 존재하고 그의 지원을 받는 클래스로 HashMap이 있습니다.

그럼 다음시간에는 실습을 통해 계속해서 자료구조를 공부하겠습니다.

댓글 없음:

댓글 쓰기