이전 Queue가 인터페이스만 있고 클래스가 없는데 이는 자바 컬렉션 프레임워크 라는 자바의 특성 떄문에 생긴 것으로 이해됬다.
그럼 과연 자바 컬렉션 프레임워크는 무엇일까
컬렉션(Collection) - 다수의 데이터
프레임워크(Framework) - 표준화된 프로그래밍
즉 다수의 데이터를 저장하는 클래스들을 표준화한 설계를 의미한다.
자바에서 지원하는 자료구조 표준 클래스라고 이해하자
공식 문서표현
컬렉션 프레임워크는 컬렉션(다수의 데이터)를 표현하고 조작하기 위한 단일화된 구조
사용자가 직접 작성할 필요가 없어 데이터 구조와 알고리즘을 제공하기에 작업량 감소
데이터 주고와 알고리즘 고성능 구현을 자체적으로 제공함으로 성능 향상
각 인터페이스의 다양한 구현체들은 상호호환이 가능함으로 구현체를 바꿔서 사용 가능
동일한 메소드 인터페이스를 가지는 자료구조의 경우 선언부분만 바꾸면 나머지 코드는 수정할 필요가 없는거지
컬렉션을 주고받을 수 있는 공통 언어를 설정하여 관련없는 API 사이의 상호 운용성을 제공
다양한 임시 컬렉션 PAI를 학습하도록 요규하여 API 학습에 필요한 노력 감소
임시 컬렉션 API를 만들필요가 없어 설계 및 구현 시간 노력 감소
컬렉션과 알고리즘을 조작할 수 있는 표준 인터페이스를 제공해서 소프트웨어 재사용을 촉진
배열의 단점을 보완하고 객체나 데이터를 효율적으로 관리하려고 사용
배열은 생성과 동시에 크기를 정해야하고 추후 추가 할당이 어렵다.
데이터가 비어 있으면 메모리 낭비도 생긴다.
그러나 컬렉션은 동적할당이기때문에 이런 문제들이 해결
컬렉션 인터페이스는 2가지로 나누어짐
Collection / Map
여기서 Map은 Collection이라고 보지는 않는다
공식 답변에서도 그런데
단일 데이터를 다루는지 Key-Value를 쌍으로 다루는지의 차이 때문이라고 본다
List,Queue,Set 3가지의 공통 부분을 가져와 Collection 인터페이스를 정의
그렇기 떄문에 Map 도 컬렉션이라고는 하지만 실질적으로는 아니다.
Map은 흔히 파이썬의 딕셔러니 개념이다.
Key는 중복이 안되고 Value는 중복이 되며 순서를 가지기도 아니기도 하다.
각 List,Set,Queue의 조상격인 Collection 인터페이스는 다음과 같은 메소드 정의
다음 포스팅에서는 List, Set, Queue 3가지의 컬렉션 인터페이스에 대해서 알아보고 이들에서 파생되어 나온 클래스 구현체들도 알아보자