Queue 자료구조

2023. 3. 27. 00:46·Algorithm
반응형

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
'Algorithm' 카테고리의 다른 글
  • 트리
  • 해시 테이블 자료구조
  • List 자료구조
  • 자료구조 정리
JAVALA
JAVALA
워니‘s Diary
    반응형
  • JAVALA
    정신줄 JAVA라
    JAVALA
  • 전체
    오늘
    어제
    • 분류 전체보기 (84)
      • Codding_Test (11)
        • BaekJoon (7)
        • Programmers (3)
      • Algorithm (11)
      • Daily (4)
        • memoir (4)
      • Error (7)
        • InteliJ (1)
        • eclipse (0)
      • Computer Science (1)
      • JAVA (7)
      • Javascript (0)
      • Spring Boot (7)
      • API (2)
      • Server (0)
      • DB (2)
        • ORACLE (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바 스프링
    프로그래머스
    개발자
    개발자 부트캠프
    프론트엔드 개발자
    트리 자료구조
    개발자 국비
    백준
    자바 스프링부트
    제로베이스
    코딩테스트
    스프링부트
    자바 클래스
    spring boot
    자바
    자바 메소드
    springboot
    개발자 비전공자
    백엔드 개발자
    자바 알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JAVALA
Queue 자료구조
상단으로

티스토리툴바