[Java] 스택(Stack)과 큐(Queue)

 

📚 Stack 클래스

  • Stack클래스는 List컬렉션 클래스의 Vector클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다.
  • 스택메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출(LIFO)을 따르는 자료구조 이다.
  • 가장 나중에 저장된(PUSH) 데이터가 가장 먼저 인출(POP)되는 구조이다.
메서드 설  명
boolean empty( )  Stack 이 비어있는지 알려줌
Object peek( )   Stack 의 맨 위에 저장된 객체를 반환
 pop( ) 과 달리  Stack 에서 객체를 꺼내지 않음(비었을 때는  EmptyStackException 발생)
Object pop( )  Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는  EmptyStackException 발생)
Object push(Object item)  Stack 에 객체( item )를 저장
int search(Object o)  Stack 에서 주어진 객체( o )를 찾아서 그 위치를 반환, 못 찾으면  -1 을 반환(배열과 달리 위치가 1부터 시작)
Stack<Integer> stack = new Stack<>();

stack.push(1);
stack.push(3);
stack.push(4);
stack.push(2);

System.out.println(stack); // [1, 3, 4, 2]

System.out.println("peek -- " + stack.peek()); // peek -- 2
System.out.println(stack); // [1, 3, 4, 2]


System.out.println("pop -- " + stack.pop()); // pop -- 2
System.out.println(stack); // [1, 3, 4]

//비었는지 검사
System.out.println("empty -- " + stack.empty()); // empty -- false

 


📚 Queue 인터페이스

  • 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다.
  • 이러한 Queue 인터페이스를 상속받는 하위 인터페이스는 다음과 같다.
    • Deque
    • BlockingDeque
    • BlockingQueue
    • TransferQueue
  • 그 중에서 Deque인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는데 가장 많이 사용된다.
  • 선입선출(FIFO) 을 따르는 자료구조 이다.
  • 가장 먼저 저장된(add) 데이터가 가장 먼저 인출(poll)되는 구조이다.
메서드 설  명
boolean add(Object o) 지정된 객체를  Queue 에 추가
성공하면 true를 반환, 저장공간이 부족하면  IllegalStateException 발생
Object remove( )  Queue 에서 객체를 꺼내 반환.
비어있으면  NoSuchElementException 발생
Object element( ) 삭제없이 요소를 읽어옴
 peek 와 달리  Queue 가 비었을때  NoSuchElementException 발생
boolean offer(Object o)  Queue 에 객체를 저장
성공하면 true, 실패하면 false를 반환
Object poll( )  Queue 에서 객체를 꺼내서 반환.
비어있으면 null을 반환
Object peek( ) 삭제없이 요소를 읽어온다.
Queue가 비어있으면 null을 반환
Queue<Integer> queue = new LinkedList<Integer>();

        queue.add(4);
        queue.add(2);
        queue.add(3);
        queue.add(1);

        System.out.println(queue); // [4, 2, 3, 1]

        System.out.println("peek -- " + queue.peek()); // peek -- 4
        System.out.println(queue); // [4, 2, 3, 1]

        System.out.println("poll -- " + queue.poll()); // poll -- 4
        System.out.println(queue); // [2, 3, 1]

        System.out.println("remove -- " + queue.remove()); // remove -- 2
        System.out.println(queue); // [3, 1]

'📕 Programing > Java' 카테고리의 다른 글

[Java] CPU, Memory 사용량  (0) 2020.07.23
JVM(Java Virtual Machine) 내부 구조  (0) 2020.05.29
배열의 선언  (0) 2020.05.13
[Java] 파일 읽기/쓰기  (0) 2019.11.28
[Java] File I/O (파일입출력)  (0) 2019.11.28

댓글

Designed by JB FACTORY