Queue란?
- FIFO로 처음에 저장한 데이터를 가장 먼저 꺼낸다.
Queue의 장점
- 요청받은 순서대로 요청을 처리하기때문에 비동기식요청을 처리할 때 유용하다.
- ex) 이륙을 기다리는 비행기 or 의사를 기다리는 환자
Queue 메서드
- boolean add(Object object) : 지정된 객체를 큐에 추가하고 성공하면 true, 큐가 꽉 찬 경우 IllegalStateException에러 발생
- boolean offer() : 지정된 객체를 큐에 추가하고 성공하면 true, 큐가 꽉 찬 경우 false 반환
- Object peek() : 삭제없이 요소를 읽는다. 비어있으면 null을 반환한다.
- Object remove() : 큐에서 객체를 꺼내서 반환한다. 비어있으면 NoSuchElementException 에러 발생
- Object poll() : 큐에서 객체를 꺼내서 반환한다. 비어있으면 null을 반환한다.
- Object clear() : 큐 비우기
Queue 사용법
- 최근사용문서
- 인쇄대기목록
- 버퍼(buffer)
최근사용문서 예시
public class RecentDocumentsQueue {
private Queue<String> recentDocuments;
private int maxSize; // 큐의 최대 크기
public RecentDocumentsQueue(int maxSize) {
this.recentDocuments = new LinkedList<>();
this.maxSize = maxSize;
}
// 문서를 큐에 추가
public void addDocument(String document) {
// 큐의 크기가 최대 크기를 초과하면 가장 오래된 문서를 제거
while (recentDocuments.size() >= maxSize) {
recentDocuments.poll();
}
recentDocuments.offer(document);
}
// 최근 사용 문서 목록 출력
public void printRecentDocuments() {
System.out.println("Recent Documents:");
for (String document : recentDocuments) {
System.out.println(document);
}
System.out.println("---------------");
}
public static void main(String[] args) {
RecentDocumentsQueue recentDocumentsQueue = new RecentDocumentsQueue(3);
recentDocumentsQueue.addDocument("Document A");
recentDocumentsQueue.addDocument("Document B");
recentDocumentsQueue.addDocument("Document C");
recentDocumentsQueue.printRecentDocuments();
recentDocumentsQueue.addDocument("Document D");
recentDocumentsQueue.addDocument("Document E");
recentDocumentsQueue.printRecentDocuments();
}
}
출력결과
Recent Documents:
Document A
Document B
Document C
---------------
Recent Documents:
Document C
Document D
Document E
---------------
'코딩테스트 및 알고리즘' 카테고리의 다른 글
N명의 환자가 있을 때 대기목록 M번째 환자는 몇 번째로 진료를 받는가 (0) | 2024.01.23 |
---|---|
수업계획짜기 (0) | 2024.01.22 |
공주 구하기 (0) | 2024.01.20 |
쇠막대기와 레이저 (0) | 2024.01.18 |
후위표기식 계산 (0) | 2024.01.16 |