본문 바로가기
ALGORITHM/개념들

[JAVA] QUEUE 큐

by sjs_2215 2019. 3. 31.

출처:

<https://118k.tistory.com/266>

<https://qortn.tistory.com/225>

<http://tcpschool.com/java/java_collectionFramework_stackQueue>

Queue

  • 특징

: FIFO(First In First Out) 구조의 자료. 배드민턴 공 통을 생각하자

: Queue(큐) 클래스 인스턴스를 생성하기 위해선 아래와 같이 'LinkedList()' 생성자를 호출해야 함.

Queue q = new LinkedList();

:push() 메소드만을 이용하여 데이터를 입력하면 스택처럼 동작 가능. 반대로, offer만을 이용하여 데이터를 입력하면 큐로 동작.

데이터 입력할 때 메소드를 잘 선택하여 입력

<메소드>
boolean add(E e)	
해당 큐의 맨 뒤에 전달된 요소를 삽입함.
만약 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킴.

boolean isEmpty()
큐가 비어있는지 true/false로 반환

int size(Object o)
큐에 들어있는 원소의 갯수 정수로 반환

E element()	
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환함.

boolean offer(E e)	
해당 큐의 맨 뒤에 전달된 요소를 삽입함.

boolean push(E e)
해당 큐의 맨 앞에 전달된 요소를 삽입

E peek()	
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환함.
만약 큐가 비어있으면 null을 반환함.

E poll()	
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환하고, 해당 요소를 큐에서 제거함.
만약 큐가 비어있으면 null을 반환함.

E remove()	
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 제거함.

System.out.println(push한 정수);
맨 뒤 요소 반환하는 방법
  • 기본 예제

package till;
import java.util.*;

public class Main {
	public static void main(String[] args){
		LinkedList<String> qu = new LinkedList<String>(); // 큐의 생성
		//Deque<String> qu = new ArrayDeque<String>();

		// add() 메소드를 이용한 요소의 저장
		qu.add("넷"); //boolean add(E e): 해당 큐의 맨 뒤에 전달된 요소를 삽입함.
		qu.add("둘");
		qu.add("셋");
		qu.add("하나");
		qu.offer("뒤로 삽입함"); //offer는 데이터를 뒤로 입력한다.
		qu.push("앞으로 삽입함"); //push는 데이터를 앞으로 입력하고
		
		System.out.println(qu.peek()); //E peek(): 해당 큐의 맨 앞에 있는 요소를 반환함. 만약 큐가 비어있으면 null을 반환함.
		System.out.println(qu);

		System.out.println(qu.poll());//E poll(): 해당 큐의 맨 앞에 있는 요소를 반환하고, 해당 요소를 큐에서 제거함. 만약 큐가 비어있으면 null을 반환함.
		System.out.println(qu);
		 
		// remove() 메소드를 이용한 특정 요소의 제거
		qu.remove("하나");// E remove(): 해당 큐의 맨 앞에 있는 요소를 제거함.
		System.out.println(qu);
	}
}

<메소드>
boolean add(E e)
해당 큐의 맨 뒤에 전달된 요소를 삽입함.
만약 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킴.

boolean isEmpty()
큐가 비어있는지 true/false로 반환

int size(Object o)
큐에 들어있는 원소의 갯수 정수로 반환

E element()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환함.

boolean offer(E e)
해당 큐의 맨 뒤에 전달된 요소를 삽입함.

boolean push(E e)
해당 큐의 맨 앞에 전달된 요소를 삽입

E peek()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환함.
만약 큐가 비어있으면 null을 반환함.

E poll()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환하고, 해당 요소를 큐에서 제거함.
만약 큐가 비어있으면 null을 반환함.

E remove()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 제거함.

System.out.println(push한 정수);
맨 뒤 요소 반환하는 방법

<메소드>
boolean add(E e)
해당 큐의 맨 뒤에 전달된 요소를 삽입함.
만약 삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킴.

boolean isEmpty()
큐가 비어있는지 true/false로 반환

int size(Object o)
큐에 들어있는 원소의 갯수 정수로 반환

E element()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환함.

boolean offer(E e)
해당 큐의 맨 뒤에 전달된 요소를 삽입함.

boolean push(E e)
해당 큐의 맨 앞에 전달된 요소를 삽입

E peek()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환함.
만약 큐가 비어있으면 null을 반환함.

E poll()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환하고, 해당 요소를 큐에서 제거함.
만약 큐가 비어있으면 null을 반환함.

E remove()
해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 제거함.

System.out.println(push한 정수);
맨 뒤 요소 반환하는 방법

Comments