[Java]Collection - Stack, Queue

수경·2023년 8월 14일
0
post-thumbnail

Stack vs Queue

Stack

  • 후입선출(LIFO, Last Input First Output)
  • 저장소에 나중에 들어간 요소가 가장 먼저 나오는 구조
    ex) 메모리 구조(stack)
    ex) 되돌리기(Ctrl+z), 다시하기(Ctrl+y)

Queue

  • 선입선출(FIFO, First Input First Output)
  • 저장소에 먼저 들어간 요소가 먼저 나오는 구조
    ex) 줄서기

stack

메소드

  • push(T value) : 요소 추가
  • size() : 요소 개수 확인
  • pop() : 마지막 요소를 반환 및 스택에서 제거
  • peek() : 마지막 요소를 반환
  • isEmpty() : 스택이 빈 공간인지 여부 확인

예제코드

		//선언
		Stack<String> stack = new Stack<String>();
		
		//후입선출
		//1. 요소 추가하기
		stack.push("짜장면");
		stack.push("짬뽕");
		stack.push("탕수육");
		
		//2. 요소 개수
		System.out.println(stack.size());
		
		//3. 요소 확인
		System.out.println(stack.pop());
		System.out.println(stack);
        
		System.out.println(stack.peek());
        System.out.println(stack);
		
		//4. 스택이 비었는지
		if (!stack.isEmpty()) {
			System.out.println(stack.pop());
		}
        
        //덤프 > stack 목록 출력
        System.out.println(stack);

3
탕수육
[짜장면, 짬뽕]
짬뽕
[짜장면, 짬뽕]
짬뽕
[짜장면]

Queue

메소드

  • add(T value) : 요소 추가
  • size() : 요소 개수 확인
  • poll() : 마지막 요소를 반환 및 큐에서 제거
  • peek() : 마지막 요소를 반환
  • isEmpty() : 큐가 빈 공간인지 여부 확인

예제코드

		//선언
		Queue<String> queue = new LinkedList<String>();	//클래스가 아닌 인터페이스이다.
		
		//1. 요소 추가
		queue.add("짜장면");
		queue.add("짬뽕");
		queue.add("탕수육");
		
		//2. 요소 개수
		System.out.println(queue.size());
		
		//3. 요소 확인
		System.out.println(queue.poll());
		System.out.println(queue);
		
        //4. 큐가 비었는지
		if(!queue.isEmpty()) {
			System.out.println(queue.poll());
		}
        
        //덤프 > 리스트 목록 출력
        System.out.println(queue);
		
		

3
짜장면
[짬뽕, 탕수육]
짬뽕
[짬뽕, 탕수육]
짬뽕
[탕수육]

profile
웹백엔드개발자를 꿈꾸는

0개의 댓글