[Java] Queue 클래스

해니·2024년 3월 12일
0

Java

목록 보기
14/34
post-thumbnail

큐 (Queue)

  • 데이터를 집어넣을 수 있는 선형 (linear) 자료형
  • 선입선출(First In First Out ,FIFO) 방식: 가장 먼저 들어온 데이터가 가장 먼저 리턴, 출력됨
  • 양방향 입구로 한쪽에서는 데이터의 입력만이 이루어지고 다른 쪽에서는 데이터의 출력만이 이루어짐
  • 삽입 연산(enqueue) , 삭제 연산 (dequeue) 등의 작업을 할 수 있음
  • 순서대로 처리해야 하는 작업을 임시로 저장해두는 버퍼(buffer)로서 많이 사용됨



Queue 클래스 사용법


Queue 선언

  • 자바에서 큐는 LinkedList를 활용하여 생성해야 한다.
    • new 키워드로 생성할 수도 있지만, Queue는 인터페이스 이기 때문에 해당 인터페이스의 메서드들을 모두 오버라이딩 해줘야 된다.
    • QueueLinkedList 모두 import되어 있어야한다.
import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue = new LinkedList<>(); //String형 queue 선언, linkedlist 이용



💡 LinkedList 컬렉션

  • 인덱스로 접근하여 조회 / 삽입이 가능하다.
  • ArrayList와의 차이점
    • ArrayList는 내부적으로 배열을 이용하여 메서드로 이리저리 조작이 가능하다.
    • Linked List는 노드(객체) 끼리의 주소 포인터를 서로 가리키며 링크(참조)함으로써 이어지는 구조이다.

📌 Java에서 컬렉션(Collection)이란 데이터의 집합(그룹)을 의미하며, JCF(Java Collections Framework)는 이러한 데이터, 자료구조인 컬렌션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다.



Queue 값 추가

  • add() : 값 추가 성공 시 true 반환. 큐가 꽉 찬 경우 IllegalStateException 발생
  • offer() : 값 추가 성공 시 true 반환. 큐가 꽉 찬 경우 false 반환
Queue<Integer> stack = new LinkedList<>(); //int형 queue 선언
queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가



Queue 값 삭제

  • remove() : 첫번째 값 반환. 큐가 비어 있는 경우 NoSuchElementException 발생
  • poll() : 첫번째 값을 반환하고 제거. 비어있다면 null 반환.
  • clear() : 큐 비우기 (큐의 모든 값들 삭제)


Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove();     // queue에 첫번째 값 제거
queue.clear();      // queue 초기화



Queue에서 가장 먼저 들어간 값 반환

  • element() : 큐의 맨 앞에 있는 값 반환. 큐가 비어 있는 경우 NoSuchElementException 발생
  • peek() : 큐의 맨 앞에 있는 값 반환. 큐가 비어있는 경우 null 반환

Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.peek();       // queue의 첫번째 값 참조






출처

[Java] 자바 Queue 클래스 사용법 & 예제 총정리
스택, 큐 (Stack, Queue)
자바 LinkedList 구조 & 사용법 - 정복하기
[JAVA] Java 컬렉션(Collection) 정리
[프로그래머스] 기능개발 - JAVA
[JAVA] Queue 자료구조 add와 offer 차이
[프로그래머스/Level2] 기능개발
[프로그래머스/자바] 기능개발 풀이
[JAVA] Queue(큐) 사용법 (add vs offer / remove vs poll / element vs peek)
[JAVA/자료구조] Queue 큐

profile
💻 ⚾️ 🐻

0개의 댓글