마지막에 들어온 데이터를 가장 처음에 꺼내는 LIFO 기능을 구현하려고 할 때 필요한 클래스다.
LIFO는 Last In First Out의 약자로 후입선출이라고 한다. -> 나중에 들어온 값을 먼저 처리.
LIFO 기능을 위해 이 클래스를 사용하는건 권장하지는 않는다. 왜냐하면 ArrayDeque라는 클래스가 존재하기 때문이다.
하지만 ArrayDeque클래스는 쓰레드에 안전하지 않다. 성능은 떨어지지만 안전한 LIFO 기능을 원한다면 Stack 클래스를 사용하면 된다.
java.lang.Object
-> java.util.AbstractCollection<E>
-> java.util.AbstractList<E>
-> java.util.Vector<E>
-> java.util.Stack<E>
Stack 클래스의 부모 클래스는 Vector인 것을 볼 수 있다. 즉 Vector 클래스에서 제공하는 모든 메소드를 사용할 수 있다.
Stack 클래스는 자바에서 상속을 잘못 받은 클래스다.
이 클래스가 JDK 1.0부터 존재했기 때문에 원래의 취지인 LIFO를 생각한다면 Vector에 속하면 안된다.
하지만, 자바의 하위 호환성을 위해서 이 상속관계를 유지하고 있다.
Stack 클래스의 생성자는 단 하나다.
Stack 클래스는 생각보다 간단하다. 하지만 이걸 공부하면서 Stack을 쓰는게 더 유리한 로직이 있다는것이 깨닫게 되었다.
당장 고치러 가야지.