Java
Stack
Stack?
- LIFO 구조를 가진 자료구조
- 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조
- 가장 나중에 쌓은 데이터가 먼저 나가는 구조
- 단순한 구조이지만 데이터 개수가 고정적이고 + 저장 공간에 낭비를 발생 시킬 수 있다.
- 자바에서는 Stack이라는 클래스를 제공해주고 있다.
Import
import java.util.Stack;
Stack<T>stack = new Stack<T>();
Stack stack = new Stack();
- 1번 같이 선언할 경우 자료형을 명시해줘야 한다.
- 2번은 모든 자료형을 전부 사용할 수 있다.(이전에 int형 데이터를 넣어도 다른 자료형의 데이터 삽입 가능)
push vs add
- 삽입을 할때는 push,add 함수를 사용하여 데이터를 삽입 시킬수 있습니다.
- push는 데이터를 넣기만 할때 사용하고
- add는 정상적으로 삽입되면 true / 실패시 false(StackOverFlow 발생)
stack.push(1);
boolean result = stack.add(2);
pop vs remove
- 삭제 함수는 pop,remove함수를 사용한다.
- pop함수에서 만약에 스택이 공백일 경우 EmptyStackException이 발생한다.
- remove함수는 index를 입력하여 지정된 index의 데이터를 삭제할 수있는데 이때 옳지 않은 index를 입력할 시 ArrayIndexOutOfBoundsException이 발생한다.
stack.pop();
stack.remove(1);
peek
- 스택의 Top에 있는 원소를 반환시 사용한다.
stack.peek();
size
- stack의 크기를 알고 싶을때 사용하는 함수
stack.size();
isEmpty vs empty
stack.isEmpty();
stack.empty();
search
stack.search(1);
set
stack.set(idx , value)
elementAt
- 지정된 인덱스의 값을 반환 옳지 않은 index 발생시 ArrayIndexOutOfBoundsException 발생
stack.elementAt(index);
clear
stack.clear();