본문 바로가기

# 02/Java

[윤성우 열혈자바] 23-4. Queue<E> 인터페이스를 구현하는 컬렉션 클래스들

반응형








큐 인터페이스


Queue<E> 인터페이스의 메소드들


boolean add(E e)            넣기

E remove()                    꺼내기

E element()                   확인하기


boolean offer(E e)          넣기, 넣을 공간이 부족하면 false 반환

E poll()                         꺼내기, 꺼낼 대상 없으면 null 반환

E peek()                        확인하기, 확인할 대상이 없으면 null








큐의 구현


public static void main(String[] args) {

Queue<String> que = new LinkedList<>();                // LinkedList<E> 인스턴스 생성!

que.offer("Box");

que.offer("Toy");

que.offer("Robot");


LinkedList<E>는 List<E>와 동시에 Queue<E>를 구현하는 컬렉션 클래스이다.

따라서 어떠한 타입의 참조변수로 참조하느냐에 따라 '리스트'로도 '큐'로도 동작한다.


// 무엇이 다음에 나올지 확인

System.out.println("next : " + que.peek());


// 첫 번째, 두 번째 인스턴스 꺼내기

System.out.println(que.poll());

System.out.println(que.poll());


// 무엇이 다음에 나올지 확인

System.out.println("next : " + que.peek());


// 마지막 인스턴스 꺼내기

System.out.println(que.poll());

}










스택(Stack)의 구현


Deque(덱)을 기준으로 스택을 구현하는 것이 자바에서의 원칙! - Stack 도 있지만 지금은 안쓰임..

Deque<E> 인터페이스의 메소드들


예외 발생하지 않음!!


● 앞으로 넣고, 꺼내고, 확인하기

boolean offerFirst(E e)             넣기, 공간 부족하면 false 반환

E pollfirst()                            꺼내기, 꺼낼 대상 없으면 null 반환

E peekFirst()                          확인하기, 확인할 대상 없으면 null 반환


 뒤로 넣고, 꺼내고, 확인하기

boolean offerLast(E e)             넣기, 공간이 부족하면 false 반환

E pollLast()                            꺼내기, 꺼낼 대상 없으면 null 반환

E peekLast()                          확인하기, 확인할 대상 없으면 null 반환


-------------------------------------------------------------------------------------------------


예외 발생!!

 앞으로 넣고, 꺼내고, 확인하기

void addFirst(E e)                     넣기

E removeFirst()                        꺼내기

E getFirst()                              확인하기


 뒤로 넣고, 꺼내고, 확인하기

void addLast(E e)                     넣기

E removeLast()                        꺼내기

E getLast()                              확인하기



덱 클래스를 앞으로 넣고 빼는 것만 사용하고 뒤로 넣고 빼는 것을 사용하지 않으면 Stack과 같이 사용할 수 있다.








스택의 예


public static void main(String[] args) {

Deque<String> deq = new ArrayDeque<>();


// 앞으로 넣고

deq.offerFirst("1.Box");

deq.offerFirst("2.Toy");

deq.offerFirst("3.Robot");


// 앞으로 꺼내기

System.out.println(deq.pollFirst());

System.out.println(deq.pollFirst());

System.out.println(deq.pollFirst());

}





다음 문장도 구성 가능

Deque<String> deq = new LinkedList<>();



LinkedList<E>가 구현하는 인터페이스들 


Deque<E>, List<E>, Queue<E>



Deque를 구성하는 방법은 ArrayDeque<>(), LinkedList<>() 두 가지 방법이 있다.

배열기반과 리스트 기반으로 배열과 리스트가 가지는 장단점에 맞게 구성할 수 있다.



반응형