본문 바로가기
IT/Java

자바 Stack 알아보기

by flatsun 2019. 2. 11.
반응형

Stack은 앞에 했던 list set map보다 더 단순한데

남들은 이런 저런 예를 들지만

나는 스택 보면 프링글스밖에 생각이 안나더라



프링글스 과자 구조를 생각해보면

처음에 들어간 과자는 제일 마지막에 먹게 되고

마지막에 들어간 과자는 제일 처음에 먹게 되는데


이거를 전문용어로 

LIFO라고 하는데

Last In First Out


마지막에 들어온게 제일 먼저 나간다는 말이다


과자 꺼내먹는다고 생각하면 이해가 빠르다


이제 바로 사용을 해 보자면



먼저 스택 정의는


Stack<자료형> stack명 = new Stack<>();

로 정의하고


stack명.push(넣을 값);

으로 스택 안에 값을 넣고


stack.pop();

으로 스택의 값을 가져온다


근데 아까 프링글스 생각해보면 된다고 했으니까

pop 하면 나오는 순서는?



과자를 뒤에 넣은 것 부터 먹는 것 처럼

스택 또한 마지막에 삽입한걸 먼저 가져온다


스택은 메소드도 몇개 없어서

모든 기능을 한번 알아보자




stack명.peek();

는 해당 스택에서 가장 위에 있는(pop 시 출력되는) 값이 뭔지 확인 가능하고


stack명.empty();

는 해당 스택이 비어있는지 여부를 알 수 있다


stack명.search(값);

은 해당 값이 배열 안에 어디에 들어있는지 위치를 보여준다


출력을 해 보면


5번


peek는 가장 위에 있는 값이 4이니 4가 출력되고


empty는 비어있지 않기 때문에 false가 출력된다

아마 pop으로 다 뽑아냈으면 true가 출력될거다


search() 는 제일 처음 push 시킨 1을 찾으려고 했는데

4가 나온다 왜냐면 stack은 LIFO이기 때문에 가장 처음 넣으면

가장 마지막에 pop이 가능해서 제일 뒤로 순서가 밀리는 것이다

반응형

댓글