2. 자료구조 별 특징

Dev StoryTeller·2020년 12월 5일
0

여기서는 전편에서 소개했던 4가지 자료구조의 간단한 특징에 대해 알아보고 넘어가려 한다.

우선 전체적인 분류 기준은 다음과 같다.

  • 순서가 있는지?
  • 정렬이 되는지?
  • 중복을 허용하는지?
  • 동기화가 되는지?

이것을 꼭 기억해두자!
각 자료구조를 구분하는데, 이거만한 건 없다!!


1. List

이것은 순서가 있는 자료 구조를 말한다.
게시판의 리스트를 떠올리면 된다.
게시판 글은 몇번째 글인지 순서가 정해져있다.
그 순서대로 정렬되고, 갑자기 뒤바뀐다거나 하지 않는다.

동기화가 되느냐 안되느냐에 따라 각각,
Vector와 ArrayList로 나뉘며, Stack도 List에 포함된다.

중복이 허용된다는 것이 큰 특징이다.

  • 데이터에 순서를 매길 수 있다.
  • 중복이 허용된다.

2. Set

집합적인 자료구조를 말한다. 이것이 무슨 말인가 하면, 리스트처럼 번호를 매기는 것이 아니라, 그냥 하나의 공간에 저장을 하는 자료구조라고 생각하면 된다.

따라서 데이터에 순서를 매기지 않으며,
그렇기 때문에 동일한 데이터는 허용되지 않는다.

데이터의 특성상 Collection의 get()메서드가 없으며,
iterator를 지정하여 next 데이터를 출력하는 방식이다.

Iterator<T> iterat = testSet.iterator();

while(iterate.hasNext()) {
     iterate.next();
}

(iterator에 대한 설명은 후에 자세히 설명하겠다)

  • 데이터에 순서를 매기지 않음
  • 중복 허용X
  • get이 아닌 iterator로 데이터 출력

3. Queue

Queue는 간단히 말해, "처음과 끝만 쓰는 구조"이다.
stack과 달리, 양쪽에서 삽입/삭제가 이루어지며,
삽입 작업Enqueue, 삭제 작업Dequeue라고 한다.

Queue는 사실 껍데기만 있다고 할 정도로, 구현체가 많다.
1. LinkedList
2. PriorityQueue
3. Dequeue
. . .

이중에서 LinkedList로 많이 구현을 한다.

  • stack과 달리, 양쪽에서 삽입/삭제가 일어나는 구조
  • 구현체가 많이 있으며, LinkedList로 많이 구현한다.

4. Map

맵은 모두가 잘 알듯이, Key-Value로 값을 저장하는 구조이다.

Set과는 비슷하지만 어딘가 좀 다르다.
Set그냥 저장 공간이지만, Mapkey-value 저장 공간이다.

key는 Id같은 것으로 중복이 허용되지 않으나, value는 중복이 가능하다.
또한 key 값으로 특정 value를 꺼내는 것도 가능하다!

  • key-value 구조의 저장 공간
  • key는 유일하나, value는 중복 가능
  • key로 특정 value를 꺼내는 것도 가능

(비슷한 이유는 사실 Set은 Map으로 만들어졌다. ㅇㅁㅇ!
이것은 후에 자세히 다루겠다.)


5. 결론

이상으로 간단히 각 자료구조의 특징을 알아보았다.
이 다음부터는 List~Map까지 자세히 배워보도록 하겠다!

profile
개발을 이야기하는 개발자입니다.

0개의 댓글