큐(QUEUE)란?
큐는 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구성이다.
큐의 특징
- Queue는 먼저 들어간 데이터가 먼저 나오는 구조를 가지며, 이를 FIFO (First In First Out) 구조라고한다.
- 큐에서는 한쪽 끝을 front로 정하고, 삭제 연산만 수행한다.
- 반대쪽 끝은 rear로 정하고, 삽입 연산만 수행한다.
- 그래프의 넓이 우선 탐색 (BFS)에서 큐를 사용한다.
- 컴퓨터 버퍼에서도 큐가 주로 사용됩니다. 입력이 즉시 처리되지 못하는 경우에는 버퍼(큐)를 만들어 데이터를 대기시키는 용도로 활용된다.
큐의 예제
큐 선언방법
import java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>(); //String 형 선언
Queue<Integer> queue = new LinkedList<>(); //Int 형 선언
}
}
위 코드에서 Queue<Integer>는 Integer 타입의 Queue를 선언하고 Queue<String>은 String 타입의 Queue를 선언한다 , new LinkedList<>()를 사용하여 LinkedList 객체를 생성하여 할당한다.
큐 값 추가하는 방법
import java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// 값 추가
queue.add(1);
queue.add(2);
queue.add(3);
// 혹은
queue.offer(1);
queue.offer(2);
queue.offer(3);
}
}
값을 Queue에 추가하려면 add() 또는 offer() 메소드를 사용할 수 있다. 두 메소드 모두 Queue의 끝(rear)에 요소를 추가하지만, add()는 Queue에 공간이 없을 때 예외를 발생시키는 반면, offer()는 false를 반환한다.
큐 값 삭제하는 방법
import java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// 값 추가
queue.add(1);
queue.add(2);
queue.add(3);
// 값 삭제
Integer removedElement = queue.remove(); // 값이 1인 요소가 삭제되고 반환
// 혹은
Integer polledElement = queue.poll(); // 값이 2인 요소가 삭제되고 반환
}
}
Queue에서 값을 삭제하려면 remove() 또는 poll() 메소드를 사용할 수 있다. 두 메소드 모두 Queue의 앞(front)에서 요소를 삭제하고 반환하지만, remove()는 Queue가 비어 있을 때 예외를 발생시키는 반면, poll()은 null을 반환한다.
Queue 에서 가장 먼저 들어간 값 출력
import java.util.Queue;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// 값 추가
queue.add(1);
queue.add(2);
queue.add(3);
// 가장 먼저 들어간 값 출력
Integer firstElementPeek = queue.peek(); // 1을 반환
System.out.println("Peek: " + firstElementPeek);
// 혹은
Integer firstElementElement = queue.element(); // 1을 반환
System.out.println("Element: " + firstElementElement);
}
}
Queue에서 가장 먼저 들어간 값을 출력하려면 peek() 또는 element() 메소드를 사용할 수 있다. 두 메소드 모두 Queue의 맨 앞(front)에 있는 요소를 반환하지만, peek()는 Queue가 비어 있을 때 null을 반환하는 반면, element()는 예외를 발생시킨다.
'JAVA 공부' 카테고리의 다른 글
Spring3.0 이상 버전에서 jstl 이 제대로 적용되지 않을때 (0) | 2023.04.05 |
---|---|
for문/확장 for (0) | 2023.03.02 |
MyBatis (0) | 2023.01.16 |