package com.use.java;
import java.util.*;
//import java.util.LinkedList;
//import java.util.Queue;
//자바에서 큐는 LinkedList를 활용하여 생성해야 함=> 그렇기에 Queue와 LinkedList가 다 import되어 있어야 사용이 가능
public class test {
//Queue은 FIFO구조 가지고 있는 자료구조
// 큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행
//다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행
//BFS에서 사용
//컴퓨터 버퍼에서 주로 사용
public static void main(String[] args) {
//선언
Queue<Integer> q = new LinkedList<>();
Queue<String> qString = new LinkedList<>();
//q값 추가 => add(value) 또는 offer(value)라는 메서드 사용
//add(value)는 삽입에 성공하면 true반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킴
q.add(1); // queue에 값 1 추가
q.add(2); // queue에 값 2 추가
q.offer(3); // queue에 값 3 추가
//q의 가장 상단의 값 출력
//q값 삭제 => poll(), remove() 메서드 사
System.out.println(q.poll()); // queue에 첫번째 값을 반환하고 제거 비어있다면 null : 1반환
System.out.println(q.remove());// queue에 첫번째 값을 반환하고 제거 : 2반환
q.clear(); // queue 초기화
//첫 번쨰로 저장된 값 출력
q.offer(1); // queue에 값 1 추가
q.offer(2); // queue에 값 2 추가
q.offer(3); // queue에 값 3 추가
System.out.println(q.peek()); //첫 번쨰로 저장된 값 참조 : 1
}
}