Java Collection에는 List, Map, Set 인터페이스를 기준으로 여러 구현체가 존재한다. Map은 Collection에 포함되지 않지만 Collecion으로 분류를 해줌. 이에 Stack과 Queue 인터페이스도 존재한다.
다수의 데이터를 다루는데 표준화된 클래스들을 제공해주기 때문에 DataStructure를 직접 구현하지 않고 편하기 사용할 수 있기 때문이다.
또한 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 상황에 따라 객체의 수를 동적으로 정할 수 있다. = 객체의 수를 동적으로 정할 수 있다.
공간적인 효율성 또한 높여줌
List 인터페이스를 직접 @Override를 통해 사용자가 정의하여 사용할 수도 있음
ArrayList, LinkedList 등의 구현체가 있다.
대표적인 구현체로 HashMap 이 존재
key-value의 구조로 이루어져 있으며 key를 기준으로 중복된 값을 저장하지 않으며 순서를 보장하지 않는다.
key의 순서를 보장하기 위해서는 LinkedHashMap 을 사용한다.
대표적인 구현체로 HashSet 이 존재
value에 대해 중복된 값을 저장하지 않고 순서도 보장하지 않는다. Hash에 의해 데이터의 위치를 특정시켜 해당 데이터를 빠르게 검색할 수 있게 만든 것이다. 즉, Hash 기능과 Set컬렉션이 합쳐진 것이 HashSet이다. 그렇기 때문에 삽입, 삭제, 색인이 매우 빠른 컬렉션 중 하나다.
순서를 보장하기 위해서는 LinkedHashSet 을 사용한다.
Stack 객체는 직접 new 키워드로 사용할 수 있으며, Queue 인터페이스는 LinkedList에 new 키워드를 적용하여 사용할 수 있음.
출처 : https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Java