1. Queue
큐는 자료구조에서 먼저 들어온 데이터가 먼저 처리되는 경우 자주 사용한다.
그래서 큐는 데이터를 넣을때는 항상 뒤에 넣고 (enqueue)
데이터가 나갈때는 가장 앞에 있는 데이터가 나간다. (dequeue)
보통 처리 순서가 정해져있는 문제에서 많이 쓴다
(BFS 할때도 넘 편함 히히)
2. 기본 문법
1) 큐 객체 선언하기
import Java.util.Queue;
import Java.util.LinkedList;
public class Main {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
}
}
2) 요소 추가하기
//선언
Queue<Integer> q = new LinkedList<>();
int count = 1;
//요소 추가 방법 2가지
q.add(count);
q.offer(count);
큐는 선입선출! 이므로 값은 뒤에 추가된다
만약 큐의 크기가 정해져 있다면
① add 는 IllegalStateException이라는 에러가 발생하고
② offer 는 false 값을 반환한다
3) 맨 앞 요소를 읽기
//선언
Queue<Integer> q = new LinkedList<>();
//맨앞 요소 읽기
q.peek();
q.element();
q.poll();
① peek 는 맨 앞 요소가 없으면 null을 리턴하고 있다면 읽기만!함
② element 는 맨 앞 요소가 없으면 NoSuchElementException 예외가 발생하고 있다면 읽기만!함
③ poll 은 맨 앞 요소를 꺼내어 읽음 (그럼 맨 앞 요소가 바뀜)
4) C++이랑 비교하믄,,,
C++에서는 empty() 라는 함수가 있어서 흔한 큐 알고리즘 문제에서 while(!q.empty()) 해주면 되는데
Java로 짤 때는 while(q.peek()!=null) 뭐 이런식으로 해줬다 ㅎ_ㅎ
728x90
반응형
'개발자 :-) > Java' 카테고리의 다른 글
[Java] 메서드 (0) | 2022.09.02 |
---|---|
[Java] 클래스 제작과 객체 생성 (0) | 2022.09.02 |
[Java] 객체지향 프로그래밍이란 (0) | 2022.08.21 |
[Java] 반복문 (0) | 2022.08.21 |
[Java] 조건문 (0) | 2022.08.21 |
댓글