Collection - Queue
원통, 통과하는 자료구조 Queue 복습해보고자 한다.
•
뚫려있는 원통같은 공간에 자료가 들어간다. 나올땐 처음 들어간 자료부터 나온다. First In First Out
•
Interface라서 생성자가 없다. => LinkedList 또는 ArrayList로 객체를 만든다.
•
삽입 삭제시 배열 크기 재 조정때문에 추가 비용 및 연산이 발생. 그리고 공간 비효율성과 배열의 재배치가 일어남.
•
LinkedList로 만드는 상황
◦
처음, 중간 데이터 추가 삭제할 경우
◦
LinkedList의 remove 함수 설명을 보면 '빈 공간을 채울 필요가 없다'고 되어있다.
◦
삭제하고 싶은 원소를 null로 변경하기만 하면 되기때문에 매우 효율적이다. 빠르다.
•
ArrayList로 만드는 상황
◦
순차적으로 추가 삭제 할 경우
◦
맨 앞에 것을 꺼내야하는데, 꺼내고 나면 그 앞자리를 채우기 위해 모든 원소들을 한 칸씩 앞으로 옮겨야한다.(비효율적, 느림)
◦
원소의 수가 많아지면 그만큼 비효율적인 것이다.
•
Method
◦
.add(E e)
◦
.peek()
◦
.poll()
•
항상 공식 문서를 확인하고 정확한 명칭을 기억하려 노력하자
1. 기본 생성법
Queue<E> name = new LinkedList<E>();
//Queue 선언 + (객체)생성
Queue<Integer> intQueue = new LinkedList<>();
Java
복사
2. Queue 메서드 사용
.add(E e) : element 추가(넣기)
//add(element) 메서드로 생성한 Queue에 element를 넣어보자.
intQueue.add(1);
intQueue.add(5);
intQueue.add(9);
Java
복사
.peek() : 먼저 들어간 element 읽기 통과, 삭제X
//읽기(r)//peek(item) 메서드로 Queue에 item을 읽을 수 있다.//10 -> 15 -> 1 순서로 들어갔기 때문에, 맨 위에는 1이있다. 그래서 1이 나온다. basket같이 들어가기 때문에.
System.out.println(intQueue.peek());
Java
복사
.poll() : 먼저 들어간 element 빼기, 반환 및 삭제
//추출(r-d)//poll() 메서드로 Queue에 추가한 element를 들어간 순서대로 꺼내면서 제거 한다.while(!intQueue.isEmpty()){
System.out.println(intQueue.poll());
}
//1-5-9순서로 넣었는데 1-5-9 순서로 나왔다.
Java
복사