정렬데이터의 혁명? 이라고 할 수 있는 자료구조가 나왔다.
List, set같은 자바 기본은 중간 요소 접근에 중심을 두었다.
하지만 많은 데이터 시나리오는 데이터 리스트의 처음과 끝에서 시작한다.
큐 -> 앞에서 꺼내기, 뒤에서 추가하기
스택 -> 앞에서 넣고 앞에서 빼기
최근 본 항목 리스트 : 앞에서 넣고 뒤에서 오래된 항목 제거
SequenceCollection은 인터페이스이기 때문에 위의 기능을 모두 사용할 수 있다.
아래에서 조금 더 자세하게 알아보자
💡 핵심 요약:
SequencedList하나로 큐/스택/덱 동작 모두 가능!
sequence는 인터페이스 형식이다.
자료구조의 공통 동작의 하나의 표준 interface에 묶어놓아서 때로는 큐처럼, 스택처럼, 덱처럼사용이 가능하다.
큐
Deque<String> queue = new ArrayDeque<>();
queue.addLast("A"); // offer
queue.removeFirst(); // poll
스택
Deque<String> stack = new ArrayDeque<>();
stack.addLast("A"); // push
stack.removeLast(); // pop
SequencedList<String> seqList = new LinkedList<>();
// 큐처럼 사용
seqList.addLast("A"); // enqueue
String first = seqList.removeFirst(); // dequeue
// 스택처럼 사용
seqList.addLast("B"); // push
String top = seqList.removeLast(); // pop
위처럼 서로 다른 메서드를 가진 queue stack과 다르게 SequencedList를 알아두면 두가지의 기능을 모두 사용할 수 있다.
![[Pasted image 20250506112622.png]]
sequenced는 인터페이스이기 떄문에 구현체가 무엇이냐에 따라서 시간 복잡도가 달라진다.
값을 많이 추가하는 경우라면 LInkedList
값을 읽어오는 작업이 많다면 ArrayList로 구현하도록 하자