wisePocket

[JAVA] 기초문법 - 자료구조 컬렉션 Queue 생성과 메서드 기능 이용 연습 - 24 본문

Java & Algorithm/Java

[JAVA] 기초문법 - 자료구조 컬렉션 Queue 생성과 메서드 기능 이용 연습 - 24

ohnyong 2023. 7. 27. 20:58

Collection - Queue

원통, 통과하는 자료구조 Queue 복습해보고자 한다.

  • 뚫려있는 원통같은 공간에 자료가 들어간다. 나올땐 처음 들어간 자료부터 나온다. First In First Out
  • Interface라서 생성자가 없다. => LinkedList 또는 ArrayList로 객체를 만든다.
  • 삽입 삭제시 배열 크기 재 조정때문에 추가 비용 및 연산이 발생.  그리고 공간 비효율성과 배열의 재배치가 일어남.
  • LinkedList로 만드는 상황
    • 처음, 중간 데이터 추가 삭제할 경우
    • LinkedList의 remove 함수 설명을 보면 '빈 공간을 채울 필요가 없다'고 되어있다.
    • 삭제하고 싶은 원소를 null로 변경하기만 하면 되기때문에 매우 효율적이다. 빠르다.
  • ArrayList로 만드는 상황
    • 순차적으로 추가 삭제 할 경우
    • 맨 앞에 것을 꺼내야하는데, 꺼내고 나면 그 앞자리를 채우기 위해 모든 원소들을 한 칸씩 앞으로 옮겨야한다.(비효율적, 느림)
    • 원소의 수가 많아지면 그만큼 비효율적인 것이다.  
  • Method
    • .add(E e)
    • .peek()
    • .poll()

 

Queue (Java Platform SE 8 )

A collection designed for holding elements prior to processing. Besides basic Collection operations, queues provide additional insertion, extraction, and inspection operations. Each of these methods exists in two forms: one throws an exception if the opera

docs.oracle.com


1. 기본 생성법

Queue<E> name = new LinkedList<E>();
Queue<E> name = new ArrayList<E>();
        //Queue 선언 + (객체)생성
        Queue<Integer> intQueue = new LinkedList<>();

 

 

2. Queue 메서드 사용

.add(E e) : element 추가(넣기)
        //add(element) 메서드로 생성한 Queue에 element를 넣어보자.
        intQueue.add(1);
        intQueue.add(5);
        intQueue.add(9);

.peek() : 먼저 들어간 element 읽기 통과, 삭제X

            //읽기(r)
            //peek(item) 메서드로 Queue에 item을 읽을 수 있다.
            //10 -> 15 -> 1 순서로 들어갔기 때문에, 맨 위에는 1이있다. 그래서 1이 나온다. basket같이 들어가기 때문에.
            System.out.println(intQueue.peek());


.poll() : 먼저 들어간 element 빼기, 반환 및 삭제

        //추출(r-d)
        //poll() 메서드로 Queue에 추가한 element를 들어간 순서대로 꺼내면서 제거 한다.
        while(!intQueue.isEmpty()){
            System.out.println(intQueue.poll());
        }
        //1-5-9순서로 넣었는데 1-5-9 순서로 나왔다.