[자료구조] 큐(Queue)

HONGKYUMIN (ANTHONY)·2022년 8월 7일
0

자료구조

목록 보기
2/2

큐(Queue)란?

큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out) 구조로 되어있다.

즉, 큐는 양 옆만 막혀있고 위아래로 뚫려 있어서 한 방향으로는 넣고 한 방향으로는 빼는 파이프와 같은 구조로 되어있다.
큐(queue)

큐는 데이터를 꺼낼 때 항상 첫 번째에 저장된 데이터를 삭제하므로, ArrayList와 같은 배열 기반의 컬렉션 클래스를 사용한다면 데이터를 꺼낼 때마다 빈 공간을 채우기 위해 데이터의 복사가 발생하므로 비효율적이다.

그래서 큐는 ArrayList보다 데이터의 추가/삭제가 쉬운 LinkedList로 구현하는 것이 더 적합하다.

Queue<String> printerQueue = new LinkedList<String>();


큐(Queue)의 메소드

  • boolean add( Object o )
    : 지정된 객체를 Queue에 추가한다.
    성공하면 true를 반환. 저장공간이 부족하면 IllegalStateException 발생

  • Object remove( )
    : Queue에서 객체를 꺼내 반환.
    비어있으면 NoSuchElementException 발생

  • Object element( )
    : 삭제없이 요소를 읽어온다.
    peek과 달리 Queue가 비었을 때 NoSuchElementException 발생

  • boolean offer( Object o )
    : Queue에서 객체를 저장.
    성공하면 true, 실패하면 false를 반환.

  • Object poll( )
    : Queue에서 객체를 꺼내서 반환.
    비어있으면 null을 반환.

  • Object peek( )
    : 삭제없이 요소를 읽어 온다.
    Queue가 비어있으면 null을 반환.



큐(Queue)의 용도

  • 순서대로 처리되는 대기줄과 같은 경우

  • 데이터 유입 속도가 데이터 소모 속도보다 빠른 경우

  • 데이터 제공자의 수가 데이터 소비자의 수와 다른 경우



Reference

Java의 정석 -남궁 성

profile
매일매일 성장하는 개발자

0개의 댓글