[JAVA] Collection - Stack, Queue, ArrayDeque

    Stack - LIFO

    .push() : 값 추가

    .peek() : 가장 상단 값 (삭제x), 비어 있으면 throws an exeption

    .pop() : 가장 상단 값 (삭제o), 비어 있으면 throws an exeption

    .search() : 최상단으로부터의 거리 (아래 예시 참고), 만약 해당 값이 존재하지 않으면 -1 리턴

    .size()

    .contains()

    .empty()

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Stack<Integer> stack = new Stack<>();
            stack.push(1);
            stack.push(3);
            stack.push(5);
            stack.push(7);
            System.out.println(stack); 
            System.out.println(stack.search(1)); // 4
            System.out.println(stack.search(3)); // 3
            System.out.println(stack.search(5)); // 2
            System.out.println(stack.search(7)); // 1
            System.out.println(stack.search(10)); // -1
    
            System.out.println(stack.peek()); // Stack의 가장 상단 값을 출력합니다.(삭제는 하지 않습니다.)
            stack.pop(); // Stack의 가장 상단 값을 제거합니다.
            System.out.println(stack);
            System.out.println(stack.size()); 
            System.out.println(stack.contains(1)); 
            System.out.println(stack.empty()); // Stack이 비어있으면 true를, 그렇지 않으면 false를 반환합니다.
            System.out.println(stack);
        }
    }

     

     

    Queue - FIFO

    .add() 값 추가

    .offer() 값 추가, 추가되지 않았으면 return false

    .peek() : 가장 상단 값 (삭제x), 비어 있으면 null

    .element() : 가장 상단 값 (삭제x), 비어 있으면 throws an exeption

    .poll() : 가장 상단 값 (삭제o), 비어 있으면 null

    .remove() :  가장 상단 값 (삭제o), 비어 있으면 throws an exeption

    .size()

    .contains()

     

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Queue<Integer> queue = new LinkedList<>();
            queue.add(1);
            queue.add(3);
            queue.add(5);
            System.out.println(queue); // [1, 3, 5]
            
            System.out.println(queue.poll()); // Queue에서 객체를 꺼내서 반환합니다.
            System.out.println(queue); [3, 5]
            
            System.out.println(queue.peek()); //Queue에서 삭제 없이 요소를 반환합니다.
            System.out.println(queue);
        }
    }

     

     

    ArrayDeque

    공식문서: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ArrayDeque.html

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            ArrayDeque<Integer> arrayDeque = new ArrayDeque<>(); // ArrayDeque를 이용한 선언(제네릭스 이용)
            arrayDeque.addFirst(1);
            arrayDeque.addFirst(2);
            arrayDeque.addFirst(3);
            arrayDeque.addFirst(4); // arrayDeque의 앞에 값을 삽입
            System.out.println(arrayDeque); // [4, 3, 2, 1]
    
            arrayDeque.addLast(0); // arrayDeque의 끝에 값을 삽입
            System.out.println(arrayDeque); [4, 3, 2, 1, 0]
    
            arrayDeque.offerFirst(10); // addFirst와 비슷하지만 큐의 크기 문제가 생길 때, offerFirst는 false를,
            // addFrist는 exception을 반환합니다.
            System.out.println(arrayDeque); //[10, 4, 3, 2, 1, 0]
    
            arrayDeque.offerLast(-1); // arrayDeque의 끝에 값을 삽입
            System.out.println(arrayDeque); // [10, 4, 3, 2, 1, 0, -1]
            System.out.println(arrayDeque.size()); // 7
    
    
            System.out.println(arrayDeque.removeFirst()); // 첫번째 값을 제거하면서 그 값을 리턴 // 10
            System.out.println(arrayDeque.removeLast()); // 마지막 값을 제거하면서 그 값을 리턴 // -1
    		System.out.println(arrayDeque); //[4, 3, 2, 1, 0]
    		System.out.println(arrayDeque.size()); // 5
    
            System.out.println(arrayDeque.pollFirst()); // 첫번째 값을 반환 및 제거하면서 그 값을 리턴 //4
            System.out.println(arrayDeque); // [3, 2, 1, 0]
    		System.out.println(arrayDeque.size()); // 4
    
            System.out.println(arrayDeque.pollLast()); // 마지막 값을 반환 및 제거하면서 그 값을 리턴 //0
            System.out.println(arrayDeque); // [3, 2, 1]
    		System.out.println(arrayDeque.size()); // 3
    
            System.out.println(arrayDeque.peekFirst()); // 첫번째 값을 반환, 제거하지 않음 // 3
            System.out.println(arrayDeque.peekLast()); // 마지막 값을 반환, 제거하지 않음 // 1
    		System.out.println(arrayDeque.size()); // 3
        }
    }

     

     

     

    스택 이용한 알고리즘 문제 : 크레인 인형뽑기 게임 https://school.programmers.co.kr/learn/courses/30/lessons/64061

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    깃허브

     

    GitHub - Suyoung225/JavaPrac

    Contribute to Suyoung225/JavaPrac development by creating an account on GitHub.

    github.com

     

    728x90

    댓글