-
[Java Collection Framework] 1. 컬렉션 프레임워크란?Programming/Java 2023. 2. 11. 22:34반응형
컬렉션 프레임워크란?
: 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합
- 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것
- 컬렉션 프레임워크는 자바의 인터페이스를 사용해 구현
📍Collection이란?
: 오브젝트의 집합. A collection is an object that represents a group of objects (such as the classic Vector class).Collection Framework 종류
- List : 인덱스의 순서로 요소를 저장하며 중복된 데이터 저장 가능
- Queue : 데이터가 저장된 순서대로 출력되는 선입선출 구조를 갖는 선형 자료구조
- Set : 순서가 없으며 데이터 중복 저장 불가. 집합 연산(합집합, 교집합, 차집합 등) 지원
- Map : Key-Value 쌍으로 데이터 저장. 순서 존재하지 않으며 Key가 중복 불가
Collection Hierarchy, 컬렉션 계층 구조
- Collection(java.util.Collection)과 Map(Java.util.Map)이 기본 루트 인터페이스
- Collection은 Iterator를 implements하고 있으며, 따라서 모든 컬렉션은 이터레이터 속성과 메서드를 사용할 수 있음
- Map은 엄밀히 말하면 collections는 아니나, collection-view operations를 갖고 있어 collections들을 조작할 수 있음
[참고 : Map은 왜 Collection Interface를 상속 받지 않을까? ]
1. Collection Interface와 Map Interface의 낮은 호환성
- Collection Interface와 이를 구현한 클래스들은 단일 데이터를 처리하지만 Map은 키와 데이터가 쌍을 이루며 처리되기 때문에 Collection에서 Map만을 위한 메소드를 만들어 컬렉션을 상속 받게 할 필요가 없음
2. Iteratable Interface와 Map Interface와의 낮은 호환성
- Map은 구조상 key, value 값을 가지게 되는데 어떤 값을 반복자로 사용할지 등에 대한 명확한 기준도 불분명📍 아래는 Java Docs에서의 공식 답변
This was by design. We feel that mappings are not collections and collections are not mappings. Thus, it makes little sense for Map to extend the Collection interface (or vice versa).
If a Map is a Collection, what are the elements? The only reasonable answer is "Key-value pairs", but this provides a very limited (and not particularly useful) Map abstraction. You can't ask what value a given key maps to, nor can you delete the entry for a given key without knowing what value it maps to.
Collection could be made to extend Map, but this raises the question: what are the keys? There's no really satisfactory answer, and forcing one leads to an unnatural interface.
Maps can be viewed as Collections (of keys, values, or pairs), and this fact is reflected in the three "Collection view operations" on Maps (keySet, entrySet, and values). While it is, in principle, possible to view a List as a Map mapping indices to elements, this has the nasty property that deleting an element from the List changes the Key associated with every element before the deleted element. That's why we don't have a map view operation on Lists.https://docs.oracle.com/javase/8/docs/technotes/guides/collections/designfaq.html#a14
반응형'Programming > Java' 카테고리의 다른 글
[Java Collection Framework] 3. Queue, PriorityQueue, Deque, ArrayDeque (0) 2023.03.13 [Java Collection Framework] 2. 컬렉션(Collection), 리스트(List), ArrayList, LinkedList, Vector (0) 2023.03.07 [Java Spring] Spring Security의 개념 및 처리 과정 (0) 2023.01.24 [Java Spring] AOP 개념 및 사용 방법(AspectJ, xml, annotation) (0) 2022.10.30 [Java Spring] IoC, DI (의존성 주입 방법 xml, annotation) (0) 2022.10.30