큐 인터페이스
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<>() 두 가지 방법이 있다.
배열기반과 리스트 기반으로 배열과 리스트가 가지는 장단점에 맞게 구성할 수 있다.
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 24-1. 컬렉션 기반 알고리즘 (0) | 2019.10.25 |
---|---|
[윤성우 열혈자바] 23-5. Map<E> 인터페이스를 구현하는 컬렉션 클래스들 (0) | 2019.10.24 |
[윤성우 열혈자바] 23-3. Set<E> 인터페이스를 구현하는 컬렉션 클래스들 (0) | 2019.10.24 |
[윤성우 열혈자바] 23-2. List<E> 인터페이스를 구현하는 컬렉션 클래스들 (0) | 2019.10.24 |
[윤성우 열혈자바] 23-1. 컬렉션 프레임워크의 이해 (0) | 2019.10.24 |