[Java] 큐(Queue)

2016. 6. 10. 15:29·개념/자료구조

자료구조에서 큐는 FIFO(First In First Out) 구조의 자료이다.

처음 들어간 데이터를 출력한다.


구현방식에 따라 다양한 종류가 존재한다.


자바의 util 에는 기본적으로 큐를 제공하기 때문에 해당 부분을 이용하면 된다.

ArrayDeque 를 이용하면 되는데 주의할 점이 하나 있다.


* 데이터를 입력하는 방법에 offer(), push() 두가지 메소드가 있는데

  push는 데이터를 앞으로 입력하고, offer는 데이터를 뒤로 입력한다.

  push 만을 이용하여 데이터를 입력하면 스택처럼 동작하고, offer 만을 이용하여 데이터를 입력하면 큐로 동작한다.

  따라서 데이터를 입력할 때 메소드를 잘 선택하여 입력해야 한다.


import java.util.ArrayDeque;

public class QueueExample {

    public static void main(String[] args) {
       
        System.out.println("-------------[offer]--------------");
        // offer를 이용한 데이터 입력
        ArrayDeque<Integer> deque = new ArrayDeque<>();
        deque.offer(5);
        printDeque(deque);
        deque.offer(4);
        printDeque(deque);
        deque.offer(3);
        printDeque(deque);
        deque.offer(2);
        printDeque(deque);
        deque.offer(1);
        printDeque(deque);
       
        // 데이터 출력
        System.out.println("");
        System.out.println(deque.poll());
        System.out.println(deque.pop());
        System.out.println(deque.poll());
        System.out.println(deque.pop());
        System.out.println(deque.poll());
       
        deque.clear();
        System.out.println("-------------[push]--------------");
       
        // push 를 이용한 데이터 입력
        deque.push(5);
        printDeque(deque);
        deque.push(4);
        printDeque(deque);
        deque.push(3);
        printDeque(deque);
        deque.push(2);
        printDeque(deque);
        deque.push(1);
        printDeque(deque);
       
        // 데이터 출력
        System.out.println("");
        System.out.println(deque.poll());
        System.out.println(deque.pop());
        System.out.println(deque.poll());
        System.out.println(deque.pop());
        System.out.println(deque.poll());
       
        deque.clear();
        System.out.println("-------------[push & offer]--------------");
       
        // push와 offer 를 이용한 데이터 입력
        // push는 앞으로, offer 는 뒤로 데이터 입력
        deque.push(5);
        printDeque(deque);
        deque.offer(4);
        printDeque(deque);
        deque.push(3);
        printDeque(deque);
        deque.offer(2);
        printDeque(deque);
        deque.push(1);
        printDeque(deque);
       
        // 데이터 출력
        System.out.println("");
        System.out.println(deque.poll());
        System.out.println(deque.pop());
        System.out.println(deque.poll());
        System.out.println(deque.pop());
        System.out.println(deque.poll());
       
    }
   
    // 큐 출력
    public static void printDeque(ArrayDeque<Integer> deque) {
       
        for(int i : deque)
            System.out.printf("%d ", i);
       
        System.out.println();
    }
}



<결과>

-------------[offer]--------------
5
5 4
5 4 3
5 4 3 2
5 4 3 2 1

5
4
3
2
1
-------------[push]--------------
5
4 5
3 4 5
2 3 4 5
1 2 3 4 5

1
2
3
4
5
-------------[push & offer]--------------
5
5 4
3 5 4
3 5 4 2
1 3 5 4 2

1
3
5
4
2


반응형
저작자표시 비영리 (새창열림)

'개념 > 자료구조' 카테고리의 다른 글

[JAVA] 스택(Stack)  (3) 2016.06.10
[자료구조] 힙과 힙소트  (0) 2015.06.08
[자료구조] 배열과 링크드 리스트  (0) 2015.06.04
'개념/자료구조' 카테고리의 다른 글
  • [JAVA] 스택(Stack)
  • [자료구조] 힙과 힙소트
  • [자료구조] 배열과 링크드 리스트
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    HIVE
    k8s
    HDFS
    백준
    S3
    yarn
    하이브
    ubuntu
    error
    build
    mysql
    파이썬
    hbase
    Tez
    정올
    Linux
    SPARK
    다이나믹
    오류
    AWS
    oozie
    nodejs
    Hadoop
    java
    bash
    하둡
    알고리즘
    Python
    airflow
    emr
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[Java] 큐(Queue)
상단으로

티스토리툴바