Java Collections Framework(JCF)란? - JCF의 정의와 특징 (JAVA)
안녕하세요? 제이온입니다.
오늘은 JCF의 정의와 특징이 무엇인지 살펴보겠습니다.
JCF란?
JCF는 Java Collections Framework의 약어로, 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 여기서 Collections은 데이터의 집합이나 그룹이라고 생각하시면 되겠습니다.
Framework vs Library
프레임워크는 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합' 이라 할 수 있으며, 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야합니다. 반면, 라이브러리는 단순 활용가능한 도구들의 집합을 말합니다.
이 둘의 차이를 좀 더 자세히 설명하자면, 프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣지만, 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있습니다.
JCF의 도입 배경
JCF가 도입되기 전, 자바 객체를 그룹핑(Collection)하는 표준화된 방법은 Arrays, Vectors, Hashtables였으며, 이 Collection들에는 어떠한 공통 인터페이스가 존재하지 않았습니다. 따라서 이 Collection들의 사용 목적이 동일하더라도, 각자 따로 정의해야하는 문제가 있었습니다. 그리고 각각의 Collection마다 사용하는 메소드, 문법, 생성자가 달랐기에 개발자가 이들을 사용하면서 혼동하기가 쉬웠습니다.
// Java program to demonstrate
// why collection framework was needed
import java.io.*;
import java.util.*;
class CollectionDemo {
public static void main(String[] args)
{
// Creating instances of the array,
// vector and hashtable
int arr[] = new int[] { 1, 2, 3, 4 };
Vector<Integer> v = new Vector();
Hashtable<Integer, String> h
= new Hashtable();
// Adding the elements into the
// vector
v.addElement(1);
v.addElement(2);
// Adding the element into the
// hashtable
h.put(1, "geeks");
h.put(2, "4geeks");
// Array instance creation requires [],
// while Vector and hastable require ()
// Vector element insertion requires addElement(),
// but hashtable element insertion requires put()
// Accessing the first element of the
// array, vector and hashtable
System.out.println(arr[0]);
System.out.println(v.elementAt(0));
System.out.println(h.get(1));
// Array elements are accessed using [],
// vector elements using elementAt()
// and hashtable elements using get()
}
}
위의 코드처럼 단순히 요소를 넣고, 요소를 찾아서 출력하는 목적은 동일하지만, 각자 사용하는 문법이 다릅니다. 예를 들어, 요소를 넣는다고 하면 vector는 addElement()이고 Hashtable은 put()입니다.
따라서 자바 개발자들은 이러한 문제를 해결하기 위해 공통의 인터페이스를 설계하였고, 그것이 오늘 소개할 Java Collections Framework입니다. 참고로, JCF가 등장하면서 Vector와 Hashtabls은 레거시 클래스가 되어 오늘날에는 더이상 사용하지 않습니다.
JCF의 장점
(1) 코드의 재사용이 쉽습니다.
(2) 데이터 구조 및 알고리즘의 고성능 구현을 제공하여 프로그램의 성능과 품질을 향상시킵니다.
(3) 관련 없는 API 간의 상호 운용성을 제공합니다.
(4) 새로운 API를 익히고 설계하는 시간이 줄어듭니다.
(5) 소프트웨어 재사용을 촉진합니다. 이것은 JCF를 사용하는 새로운 데이터 구조가 재사용 가능하기 때문이며, 같은 이유로 JCF를 사용하는 객체를 활용하여 새로운 알고리즘을 만들어낼 수 있습니다.
정리
지금까지 JCF의 의미와 함께 왜 도입이 되었고, 어떠한 장점이 있는지 알아보았습니다.
다음 시간에는 JCF의 계층 구조를 다뤄보겠습니다.
출처
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java Collections Framework(JCF)란? - Queue와 Deque (JAVA) (0) | 2021.02.12 |
---|---|
Java Collections Framework(JCF)란? - JCF의 계층 구조와 List (JAVA) (0) | 2021.02.11 |
AssertJ 필수 기능 정리 (JAVA) (1) | 2021.02.08 |
JUnit5 필수 개념 정리 (JAVA) (0) | 2021.02.06 |
Stream이란? - 최종 처리 메소드의 종류와 사용 방법 [3 - groupingBy()] (JAVA) (0) | 2021.01.10 |
댓글