[JavaStudy] Stack

진주·2022년 3월 21일
0

JavaStudy

목록 보기
9/9

Stack ?

사전적 의미로는 '쌓다', '더미' 라는 뜻을 가지고 있다.

또한 Collection 프레임워크의 일부이며, java.util 패키지에 소속되어있다.

Stack의 가장 큰 특징은 후입선출 (LIFO : Last In First Out) 입니다.


Stack 선언하기

Stack st = new Stack(); // 타입 설정x Object로 선언 

Stack<StackDemo> demo = new Stack<StackDemo>(); // class타입으로 선언 
Stack<Integer> i = new Stack<Integer>(); // Integer타입 선언 
Stack<Integer> i2 = new Stack<>(); // 뒤의 타입 생략 가능 

Stack<String> s = new Stack<String>(); // String타입 선언 
Stack<Character> ch = new Stack<Character>(); // Char타입 선언

Stack<타입> 변수명 = new Stack<타입>(); 으로 선언한다.

타입 선언의 생략이 가능하지만, 처음 들어간 동일한 타입으로 입력을 계속 받지 못하면, 타입 에러가 발생하므로 타입을 명확하게 선언하는게 좋다.


Stack 값 추가 : push()

import java.util.Stack;

public class stack_study {

    public static void main(String[] args) {
        Stack<String> st = new Stack<>();

        // Stack 값 추가 : push()
        st.push("HI Developer");
        st.push("ME too");

        System.out.println(st);
    }
}

[결과]


Stack 값 삭제 : pop(), clear()

import java.util.Stack;

public class stack_study {

    public static void main(String[] args) {
        Stack<String> st = new Stack<>();

        // Stack 값 추가 : push()
        st.push("HI Developer");
        st.push("ME too");

        System.out.println(st);

        st.pop();   // ME too 삭제
        System.out.println(st);

        st.clear(); // Stack 값 전체 제거
        System.out.println(st);
    }
}

pop() 메서드를 활용하면, Stack에서 값을 삭제한다.
값을 LIFO를 따라 맨 마지막에 Input한 값을 삭제한다!

clear() 메서드를 사용하면, Stack의 모든 값을 삭제한다.

[결과]


Stack 크기 구하기 : size()

import java.util.Stack;

public class stack_study {

    public static void main(String[] args) {
        Stack<String> st = new Stack<>();

        // Stack 값 추가 : push()
        st.push("HI Developer");
        st.push("ME too");

        System.out.println("Size : " + st.size());
    }
}

[결과]


Stack 값 출력 : firstElement(), lastElement(), peek(), Iterator()

import java.util.Iterator;
import java.util.Stack;

public class stack_study {

    public static void main(String[] args) {
        Stack<String> st = new Stack<>();

        // Stack 값 추가 : push()
        st.push("HI Developer");
        st.push("ME too");
        st.push("Nice to meet you");

        // firstElement, lastElement, peek
        System.out.println("처음 값 : " + st.firstElement());
        System.out.println("마지막 값 : " + st.lastElement());
        System.out.println("마지막 값 : " + st.peek());

        // get() 메서드 사용하여 index 출력
        for(int i = 0; i < st.size(); i++){
            System.out.println(st.get(i)+ " ");
        }

        // 향상된 for문 사용하여 Stack 값 출력
        for(String str : st){
            System.out.println(str + " ");
        }

        // Iterator를 사용하여 Stack 값 출력
        Iterator iter = st.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next()+ " ");
        }

    }
}

firstElement() : Stack의 맨 처음 Input한 값을 찾을 수 있다

lastElement(), peek() : Stack의 맨 마지막에 Input한 값을 꺼낼 수 있다.

[결과]


Stack 값 검색 : contains(), indexOf()

import java.util.Iterator;
import java.util.Stack;

public class stack_study {

    public static void main(String[] args) {
        Stack<String> st = new Stack<>();

        // Stack 값 추가 : push()
        st.push("HI Developer");
        st.push("ME too");
        st.push("Nice to meet you");

        System.out.println("값 검색(contains) : " + st.contains("HI"));
        System.out.println("값 검색(indexOf) : " + st.indexOf("HI"));

        System.out.println("값 검색(contains) : " + st.contains("HI Developer"));
        System.out.println("값 검색(indexOf) : " + st.indexOf("HI Developer"));
        System.out.println("값 검색(indexOf) : " + st.indexOf("ME too"));

    }
}

contains() : 메서드를 호출하면 값의 여부를 판단하여 true, false를 반환한다.

indexOf() : 메서드를 호출하면 값의 Index를 반환한다.

[결과]


참고 및 출처 : https://crazykim2.tistory.com/569
https://coding-factory.tistory.com/601

profile
진주의 코딩일기

0개의 댓글