마지막에 저장한 데이터를 가장 먼저 꺼냄.
LIFO(Last In First Out)형태 라고도 한다.
Stack<타입> 스택이름 = new Stack<>();
스택이름.push(넣을 값);
꺼내지 않고 확인만 함.
스택이름.peek();
값을 가져와서 리턴함. 스택의 길이가 줄어든다.
스택이름.pop();
스택이름.contains();
스택이름.empty()
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(5);
stack.push(7);
stack.push(4);
System.out.println(stack);
System.out.println(stack.peek());
System.out.println(stack.size());
System.out.println(stack.pop());
System.out.println(stack.size());
System.out.println(stack.contains(1));
System.out.println(stack.empty());
첫 번째 저장하는 값이 가장 먼저 나옴.
큐는 인터페이스이기 때문에 구현체가 필요하다.
Queue 큐이름 = new LinkedList<>();
큐이름.add(넣을 값);
값을 가져와서 리턴함. 큐의 길이가 줄어든다.
큐이름.poll();
큐이름.peek();
clear, isEmpty 스택과 같이 모두 존재함
기본 스택과 큐의 기능을 포함하면서도 pop, push, pull 함수도 가능하여 성능이 더 좋음
즉, 값이 양쪽에서 삽입되고 꺼내질 수 있음.
ArrayDeque<타입> 이름 = new ArrayDeque<>();
이름.addFirst();
앞자리에 값을 계속 넣으면 원래 앞자리에 있던 값이 뒤로 밀려남.
ArrayDeque<Integer> arrDeque = new ArrayDeque<>();
arrDeque.addFirst(1);
arrDeque.addFirst(3);
arrDeque.addFirst(5);
arrDeque.addFirst(4);
System.out.println(arrDeque); // 4,5,3,1 출력
이름.addLast();
addFirst와 다른점 : 어레이 디큐의 길이 등에 문제가 있을 때 에러가 나지 않고 false를 반환
이름.offerFirst();
이름.offerLast();
스택과 큐에서 사용했던 push, pop, poll, pollFirst, pollLast, peek, size, clear, isEmpty함수도 제공