자바/자료구조

[Java] Stack, 스택

backend dev 2022. 12. 20.

Stack

~을 쌓다는 의미, 벽돌을 쌓는다 생각했을때 가장 먼저들어온 벽돌은 가장 아래에 위치할 것이고,

가장 나중에 들어온 벽돌은 가장 위에 위치할 것이다. 

그리고 다시 이 벽돌들을 치운다고 생각할때 , 맨위에있는 벽돌부터 빼낼것이다.

 

이렇게 먼저 들어온 데이터가 마지막에 나가는 구조를

후입선출(LIFO = Last in First out) 또는 선입후출(FILO = First in Last out)이라고 한다. (둘 다 같은 말이다.)

search() 메소드

스택 내부 배열의 인덱스 값이 아니라 스택의 '상단으로부터 몇 번째에 위치 하는지'를 반환하는 것이다. 

즉, 거리 개념이라고 보면 된다.

Stack<Integer> a = new Stack<>();
a.add(1);
a.add(2);
a.add(3);

bw.write(a.search(1)+"\n");

 

size()

스택의 크기는 size() 메소드를 이용하여 구할 수 있다.

 

firstElement()

firstElement() 메서드를 사용하여 stack의 맨처음 input한 값을 찾을 수 있다.

 

lastElement() , peek()

lastElement() 메소드를 이용하여 stack의 맨 마지막에 input한 값을 꺼내올 수 있다.

 

get()

get(int index) 메소드를 사용하여 해당 index의 값을 찾아 호출 해준다. -> 인덱스는 맨처음 들어간값이 0인덱스이다.

들어간 순서대로 0부터 인덱스를 가진다.

Stack<Integer> a = new Stack<>();
a.add(1);
a.add(2);
a.add(3);
int stackLength = a.size();
for (int i = 0; i < stackLength; i++) {
    bw.write(a.get(i)+"\n");
}

 

elementAt(int index) 메소드

인덱스를 넣으면 해당 인덱스의 값이 어떤것인지 가져와준다. 

0인덱스가 가장 처음에 들어간 값이다.

 

remove(int index)  , remove (Object o)

Stack<Integer> stack = new Stack<>();
stack.add(1);
stack.add(2);
stack.add(4);

Integer a = 4;
bw.write(stack.remove(a)+"\n");
bw.write(stack.peek()+"\n");

remove (객체)를 이용한 삭제 가능.

Stack<Integer> stack = new Stack<>();
stack.add(1);
stack.add(2);
stack.add(3);

bw.write(stack.elementAt(0)+"\n");
bw.write(stack.remove(0)+"\n");
bw.write(stack.elementAt(0)+"\n");

elementAt(인덱스)로 인해 해당 인덱스값 확인,

remove(인덱스)로 해당 인덱스위치값 삭제

 

indexOf(Obejct o)

해당값 인덱스값 리턴 , 없으면 -1 리턴

Stack<Integer> stack = new Stack<>();
stack.add(1);
stack.add(2);
stack.add(4);

bw.write(stack.indexOf(4)+"\n");

 

 

 

 

 

 

 

 

 

자바 Stack 예제부터 사용방법까지

자바에서 Stack의 주요 특징은 나중에 넣은게 먼저 나온다는 것인데 이것을 LIFO (Last In First Out) 이라고 한다 1,2,3을 차례대로 넣고 꺼낼 시 3,2,1 순으로 나온다는 것 Stack의 주요 메소드는 아래와 같

wakestand.tistory.com

 

자바 [JAVA] - Stack Interface (스택 인터페이스)

자료구조 관련 목록 링크 펼치기 더보기 0. 자바 컬렉션 프레임워크 (Java Collections Framework) 1. 리스트 인터페이스 (List Interface) 2. 어레이리스트 (ArrayList) 3. 단일 연결리스트 (Singly LinkedList) 4. 이중

st-lab.tistory.com

 

'자바 > 자료구조' 카테고리의 다른 글

[Java] 우선순위 큐 (Priority Queue)  (0) 2022.12.24
[Java] Heap, 힙 , 트리, 이진트리, 완전 이진트리  (0) 2022.12.24
[Java] Set [HashSet]  (0) 2022.12.05
[Java] HashMap  (1) 2022.12.04
[Java] ArrayList, LinkedList  (0) 2022.12.03

댓글