사전적 의미로는 '쌓다', '더미' 라는 뜻을 가지고 있다.
또한 Collection 프레임워크의 일부이며, java.util 패키지에 소속되어있다.
Stack의 가장 큰 특징은 후입선출 (LIFO : Last In First Out)
입니다.
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<타입>();
으로 선언한다.
타입 선언의 생략이 가능하지만, 처음 들어간 동일한 타입으로 입력을 계속 받지 못하면, 타입 에러가 발생하므로 타입을 명확하게 선언하는게 좋다.
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);
}
}
[결과]
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의 모든 값을 삭제한다.
[결과]
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());
}
}
[결과]
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한 값을 꺼낼 수 있다.
[결과]
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