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");
'자바 > 자료구조' 카테고리의 다른 글
[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 |
댓글