본문 바로가기
Develop/Ps

[Java] Queue 메서드

by J-rain 2024. 4. 16.

 

자바에서는 Queue 는 인터페이스고 필요에 따라 큐 컬렉션을 골라 사용할 수 있다.

자주 사용하는 큐 컬렉션에는 LinkedList, ArrayDeque 가 있다. 코테에서는 주로 ArrayDeque사용

import java.util.Queue;
import java.util.ArrayDeque;

ArrayDeque<Integer> queue = new ArrayDeque<>();

 

메서드 설명
boolean add(Object o) 지정된 객체를 Queue에 추가
저장공간 부족 시 IllegalStateException 발생
Object remove() Queue에서 객체를 꺼내 반환
비어있을 경우 NoSuchElementException 발생
Object element() 삭제없이 요소를 읽어온다.
비어있을 경우 NoSuchElementException 발생
boolean offer(Object o) Queue에 객체를 저장
Object poll() Queue에서 객체를 꺼내서 반환
비어있을 경우 null을 반환
Object peek() 삭제없이 요소를 읽어온다.
비어있을 경우 null을 반환

 

 

덱을 큐처럼 활용하기

양 끝에서 삽입이나 삭제가 가능해서 큐를 구현할때는 덱을 사용하는 것도 좋다.

ArrayDeque<Integer> deq = new ArrayDeque<>();

// 데이터 추가
deq.addLast(1);
deq.addLast(2);
deq.addLast(3);

// 맨 앞 데이터를 제거하면서 반환
int first = deq.pollFirst();
System.out.println(first); // 1

// deq.addFrist(), deq.pollLast()

ArrayDeque에도 Queue와 동일한 역할을 하는 add() 메서드와 poll() 메서드가 있지만 addLast(), pollFirst() 메서드를 사용하는 이유는 직관적으로 이해할 수 있기 때문이다.

 

추가로 데이터를 addFirst() 로만 넣고, pollFirst() 로만 꺼내면 동작은 스택의 push(), pop()과 동일하므로 ArratDeque 하나면 스택, 큐, 덱을 전부 구현 가능

 

 

LinkedList

import java.util.Queue;


Queue<Integer> queue = new LinkedList<>();

 

메서드는 LinkedList 쓸때와 같다.

1. 삽입                                                                       

q.add(삽입할 value);

  ㄴ 반환 값(boolean): 삽입 성공 시 true / 실패 시  Exception발생

 

q.offer(삽입할 value);

  ㄴ 반환 값(boolean): 삽입 성공 시 true / 실패 시 false 반환

 

2. 삭제                                                                       

q.remove();

  ㄴ 반환 값(삭제된 value의 자료형): 삭제된 value / 공백 큐이면 Exception("NoSuchElementException") 발생

 

q.remove(삭제할 value);

  ㄴ 반환 값(boolean): 큐에 해당 value가 존재하면 해당 값 삭제 후 true / 존재하지 않으면 false 반환

 

q.poll();

  ㄴ 반환 값(삭제된 value의 자료형): 삭제된 value / 공백 큐이면 null 반환

 

3. 큐의 front에 위치한 value 반환                                        

q.element();

  ㄴ 반환 값(큐 head에 위치한 value의 자료형): 큐 head에 위치한 value / 공백 큐이면 Exception("NoSuchElementException") 발생

 

q.peek();

  ㄴ 반환 값(큐 head에 위치한 value의 자료형): 큐 head에 위치한 value / 공백 큐이면 null 반환

 

4. 큐 초기화(= 공백 큐 만들기)                                         

q.clear();

  ㄴ 반환 값(void): X

 

5. 큐 크기                                                                      

q.size();

  ㄴ 반환 값(int): 큐 사이즈 반환

 

6. 큐에 해당 원소가 존재하는지?                                       

q.contains(찾을 value);

  ㄴ 반환 값(boolean): 해당 값이 존재할 때 true / 해당 값이 없을 때 false 반환

 

7. 공백 큐인가?                                                               

q.isEmpty();

  ㄴ 반환 값(boolean): 공백 큐이면 true / 공백 큐가 아니면 false 반환

'Develop > Ps' 카테고리의 다른 글

[JAVA] 코테 정리  (0) 2024.07.15
[Java] Stack 메서드  (0) 2024.04.16
[Java] StringBuilder 메서드  (0) 2024.04.15
[Java] String 메서드  (0) 2024.04.15
[Java] Set 메서드  (0) 2024.04.15

댓글