반응형
Queue
Queue<Integer> q = new LinkedList<>(); // 선언
// 값 추가
q.add(1);
q.offer(2);
q.poll(); // top 값 출력 후 제거
q.remove(); // top 값 제거
q.clear(); // 큐 초기화
q.peek(); // top 값 출력
q.size(); // 큐 크기 출력
q.isEmpty() // 큐가 비어있으면 true
q.contains("str") // 큐에 포함되어 있으면 true
Deque
양쪽에서 삽입과 삭제가 모두 가능한 자료구조
-Deque : Doubly-ended Queue
-Stack 과 Queue를 합친 형태
데크의 기본구조
데크의 기본 구조는 양방향에서 삽입 삭제 가능한 구조
일부 기능을 제한하여 용도에 맞게 변형 가능
add, remove : 빼거나 추가 할 떄 공간이 없으면 예외를 발생(오류)
offer, poll : null또는 flase 반환
입력제한 데크(Scroll)
어느한 쪽을 입력 제한을 시킴
출력제한 데크(Shelf)
어느한 쪽의 출력을 제한한 데크
데크 선언
Deque<String> deque1 = new ArrayDeque<>();
Deque<String> deque2 = new LinkedBlockingDeque<>();
Deque<String> deque3 = new ConcurrentLinkedDeque<>();
Deque<String> linkedList = new LinkedList<>();
데크 값 추가
deque.addFirst(); // Deque의 앞쪽에 데이터를 삽입, 용량 초과시 Exception
deque.offerFirst(); // Deque의 앞쪽에 데이터를 삽입 후 true, 용량 초과시 false
deque.addLast(); // Deque의 뒤쪽에 데이터를 삽입, 용량 초과시 Exception
deque.add(); // addLast()와 동일
deque.offerLast(); //Deque의 뒤쪽에 데이터를 삽입 후 true, 용량 초과시 false
deque.offer(); // offerLast()와 동일
deque.push(); // addFirst()와 동일
deque.pop(); // removeFirst()와 동일
데크 값 제거
deque.removeFirst(); // Deque의 앞에서 제거, 비어있으면 예외
deque.remove(); // removeFirst()와 동일
deque.poll(); // Deque의 앞에서 제거, 비어있으면 null 리턴
deque.pollFirst(); // poll()과 동일
deque.removeLast(); // Deque의 뒤에서 제거, 비어있으면 예외
deque.pollLast(); // Deque의 뒤에서 제거, 비어있으면 null 리턴
// 메소드 사용
// Deque의 앞쪽에서 찾아서 첫 번째 데이터를 삭제
deque.removeFirstOccurrence(Object o);
// Deque의 뒤쪽에서 찾아서 첫 번째 데이터를 삭제
deque.removeLastOccurrence(Object o);
// removeFirstOccurrence() 메소드와 동일
deque.remove(Object o);
반응형
'Algorithm' 카테고리의 다른 글
이진 탐색 트리 자료구조 (1) | 2023.03.28 |
---|---|
트리 (0) | 2023.03.27 |
해시 테이블 자료구조 (0) | 2023.03.27 |
List 자료구조 (0) | 2023.03.24 |
자료구조 정리 (0) | 2023.03.24 |