컬렉션 프레임워크와 큐, 스택

Queue<E> 인터페이스를 구현하는 컬렉션 클래스들

  • Queue<E>
  • Deque<E>

1. Queue<E>, 큐

Queeue<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<>();
    que.offer("Box");
    que.offer("Toy");
    que.offer("Robot");
    
    // 무엇이 나올지 확인
    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());
    
}

[코드 설명]

  • LinkedList는 List와 동시에 Queue를 구현하는 컬렉션 클래스입니다.
    따라서 어떠한 타입의 참조 변수로 참조하느냐에 따라 '리스트' 또는 '큐'로 사용할 수 있습니다.

2. Deque, 스택

Deque 인터페이스의 메소드들

<앞에서 넣고 확인>

  • boolean offerFirst(E e) : 넣기 공간 부족하면 false 반환
  • E poolFirst() : 꺼내기, 꺼낼 대상 없으면 null 반환
  • E peekFirst() : 확인하기, 확인할 대상 없으면 null 반환

<뒤에서 넣고 확인>

  • boolean offerLast(E e) : 넣기, 공간이 부족하면 false 반환
  • E poolLast() : 꺼내기, 꺼낼 대상 없으면 null 반환
  • E peekLast() : 확인하기, 확인할 대상 없으면 null 반환

스택의 구현

public static void main(String[]args){
    Deque<String> deq = new ArrayDeque<>();
    Deque<String> deq = new LinkedList<>(); // 이렇게도 생성이 가능하다.
    
    // 앞으로 넣고
    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<E>를 사용하며, 한쪽에서만 넣고, 빼는 것으로 구현할 수 있습니다.

좋은 웹페이지 즐겨찾기