자료구조는 크게 Collection과 Map으로 나눌 수 있다.
Collection에는 Set, List, Queue로 구성되어 있다.
순서를 보장하지 않고, 중복이 허용되지 않는 데이터 집합
▫ 순서를 가지지 않고, 중복을 허용하지 않는다.
▫ 대표적으로 많이 사용하는 집합 자료구조이다.
▫ 순서를 가지고, 중복을 허용하지 않는다.
❗ Set의 특징과 달리, LinkedHashSet은 순서를 가진다.
▫ 순서를 가지지 않고, 중복을 허용하지 않는다.
❗ 하지만, TreeSet은 데이터를 정렬하여 저장한다.
순서를 보장하고, 중복이 허용되는 데이터 집합
▫ 배열을 이용한 리스트
▫ 조회가 빠르지만, 삽입 및 삭제가 느리다.
❗ 동기화를 지원하지 않는다.
▫ Node와 Pointer를 이용한 리스트
▫ Pointer의 노드 연결로 인해 삽입 및 삭제가 빠르지만, 조회는 첫 노드부터 탐색하기 때문에 느리다.
*Node는 next와 prev로 양방향 포인터를 가진다.
▫ 배열을 이용한 리스트
❗ ArrayList와 달리, 동기화를 지원한다.
▫ LIFO(Last-In-First-Out) 특성을 가지는 자료구조
▫ 마지막에 들어온(Push) 데이터가 처음으로 나가는(Pop) 특징이 있다.
❗ ArrayList와 Vector의 차이점
순서를 가지지 않고, Key와 Value로 이루어진 데이터 집합
Key의 중복은 허용하지 않고, Value의 중복은 허용한다.
▫ 일반적으로 많이 사용하는 Map 자료구조이다.
▫ 순서를 보장하지 않는다.
▫ Key의 중복은 허용하지 않고, Value의 중복은 허용한다.
▫ Key를 통해서 Value의 값을 얻을 수 있다.
❗ 동기화를 지원하지 않는다.
❗ Key값과 Value값에 null이 허용된다.
▫ 순서를 보장하지 않는다.
▫ Key의 중복은 허용하지 않고, Value의 중복은 허용한다.
▫ Key를 통해서 Value의 값을 얻을 수 있다.
❗ HashMap과 달리, 동기화를 지원한다.
❗ HashMap과 달리, Key값과 Value값에 null이 허용되지 않는다.
▫ Key의 중복은 허용하지 않고, Value의 중복은 허용한다.
▫ Key를 통해서 Value의 값을 얻을 수 있다.
❗ Map의 특징과 달리, 들어온 순서대로 순서를 유지한다.
▫ 순서를 가지지 않고, 중복을 허용하지 않는다.
❗ 하지만, TreeMap은 데이터를 정렬하여 저장한다.
❗ 정렬한 뒤 저장하기 때문에 다른 자료구조에 비해 오래 걸린다.
이진트리로 구성되어 있고, 저장시 Key기준으로 오름차순으로 저장된다.
❗ HashMap과 Hashtable의 차이점
FIFO(First-In-First-Out) 구조를 가지는 자료구조
처음 들어온(enqueue) 데이터가 처음으로 나가는(dequeue) 특징을 가진다.
▫ 이진트리 구조를 가진다.
▫ 데이터에 우선순위를 부여하여 높은 순으로 먼저 반환한다.
▫ 양쪽으로 넣고(enqueue) 빼는 것(dequeue)이 가능하다.
❗ List와 Set은 서로 반대 개념