List
,Map
,Set
인터페이스를 기준으로 여러 구현체가 존재사용하는 이유
- 다수의 Data 를 다루는데
표준화된 클래스
들을 제공해주기 때문에 DataStructure 를 직접 구현하지 않고 편하게 사용할 수 있기 때문 - 배열과 다르게
객체를 보관하기 위한 공간을 미리 정하지 않아
도 되므로, 상황에 따라객체의 수를 동적으로 정할 수 있다
- 프로그램의 공간적 효율성 또한 높여준다
- 다수의 Data 를 다루는데
List
인터페이스를 직접@Override
를 통해 사용자가 정의하여 사용할 수도 있으며, 대표적인 구현체로는ArrayList
가 존재한다.- 이는 기존에 있었던
Vector
를 개선한 것이다
- 이는 기존에 있었던
LinkedList
- 각 node가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조
- 데이터를 담고 있는 node들이 연결되어 있는데, node의 포인터가 다음이나 이전 node와의 연결을 담당한다
장점
- 늘어선 node의 중간지점에서도 자료의 추가/삭제가
O(1)
의 시간에 가능하다는 장점을 갖는다
- 늘어선 node의 중간지점에서도 자료의 추가/삭제가
단점
- 배열이나 트리 구조와는 다르게 특정 위치의 데이터를 검색하는데는
O(n)
의 시간이 걸린다는 단점이 있다
- 배열이나 트리 구조와는 다르게 특정 위치의 데이터를 검색하는데는
- 대표적인 구현체로
HashMap
이 존재한다 key-value
의 구조로 이루어져 있으며 Map 에 대한 구체적인 내용은 DataStructure 부분의hashtable
과 일치한다- key 를 기준으로
중복된 값을 저장하지 않으며
순서를 보장하지 않는다
- key 에 대해서 순서를 보장하기 위해서는
LinkedHashMap
을 사용한다
- 대표적인 구현체로
HashSet
이 존재한다. value
에 대해서 중복된 값을 저장하지 않는다- 사실 Set 자료구조는 Map 의 key-value 구조에서 key 대신에 value 가 들어가 value 를 key 로 하는 자료구조일 뿐이다
- 마찬가지로 순서를 보장하지 않으며 순서를 보장해주기 위해서는
LinkedHashSet
을 사용한다