스택(stack)
코틀린에서 스택은 구현되어 있지 않다. java.util 패키지에 존재하는 Stack 혹은 ArrayDeque를 사용하거나 kotlin.collections 패키지의 ArrayDeque를 사용해야 한다.
- 선언 및 초기화
import java.util.*
fun main() {
val stack1: Stack<Int> = Stack() //java.util.Stack 사용.
val stack2: Deque<Int> = ArrayDeque() //코틀린 혹은 java.util의 ArrayDeque 사용.
}
java.util.Stack
해당 패키지의 스택은 Vector로 구현되어 있다.
함수
- E push(E item): 스택에 item을 추가한다. 추가한 item을 반환한다.
- E pop(): 스택의 top에 있는 값을 꺼내 반환한다. 스택이 비었다면 EmptyStackException을 반환한다.
- E peek() 스택의 top에 있는 값을 반환한다. 스택이 비었다면 EmptyStackException을 반환한다.
- Boolean empty(): 스택이 비었는지 확인한다. 비어있다면 true를, 아니라면 false를 반환한다.
- Int search(E item): item이 스택에서 몇번째로 빠져나올 수 있는지를 반환한다. item이 스택에 없다면 -1을 반환한다.
https://docs.oracle.com/javase/8/docs/api/java/util/Stack.html
java.util.ArrayDeque
함수
- void push(E item): 스택에 item을 추가한다. deque의 첫번째에 삽입된다. item이 null이라면 NullPointerException을 반환한다.
- E pop(): 스택의 top에 있는 원소(=deque의 첫번째 원소)을 꺼내 반환한다. deque가 비었다면 NoSuchElementException을 반환한다.
- E peek(): deque의 top에 있는 값을 반환한다. deque가 비었다면 null을 반환한다.
- Boolean isEmpty(): deque이 비었는지 확인한다. 비어있다면 true를, 아니라면 false를 반환한다.
- Int size(): deque의 크기를 반환한다.
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayDeque.html
큐(queue)
마찬가지로 코틀린에서 큐가 구현되어 있지 않아 java.util 패키지에 존재하는 Queue나 kotlin.collections.ArrayDeque를 사용한다. java.util 패키지에 있는 Queue는 인터페이스이기 때문에 LinkedList로 구현한다. 이 경우 큐의 구현이 LinkedList로 이루어지기 때문에 java.util.Queue와 java.util.LinkedList 둘 다 import가 필요하다.
- 선언 및 초기화
import java.util.*
import kotlin.collections.ArrayDeque
fun main() {
val queue1: Queue<Int> = LinkedList() //java.util.Queue 사용.
val queue2: Deque<Int> = ArrayDeque() //코틀린 ArrayDeque 사용.
}
java.util.Queue
함수
- Boolean add(E element): 큐에 element를 추가한다. 정상적으로 추가되었다면 true를, 아니라면 false를 반환한다. 용량으로 인해 삽입이 불가능하다면 IllegalStateException이 발생한다.
- Boolean offer(E element): 큐에 element를 추가한다. 정상적으로 추가되었다면 true를, 아니라면 false를 반환한다.
- E remove(): 큐의 헤드에 존재하는 원소를 큐에서 빼내 반환한다. 큐가 비어있다면 NoSuchElementException 오류가 발생한다.
- E poll(): 큐의 헤드에 존재하는 원소를 큐에서 빼내 반환한다. 큐가 비어있다면 null을 반환한다.
- E elemet(): 큐의 헤드에 존재하는 원소를 반환한다. 큐가 비어있다면 NoSuchElementException 오류가 발생한다.
- E peek(): 큐의 헤드에 존재하는 원소를 반환한다. 큐가 비어있다면 null을 반환한다.
이외의 java.util.collections로부터 상속받은 Boolean isEmpty(), Int size()등을 사용할 수 있다.
https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html
덱(데큐, deque)
kotlin.collections.ArrayDeque
deque이므로 양방향에서 삽입 및 삭제가 가능하다.
함수
추가
- Boolean add(E item): deque의 끝에 item을 추가한다. 항상 연산대로 수행되므로 항상 true를 반환한다.
- void addFirst(E item): deque의 처음에 item을 추가한다.
- void addLast(E item): deque의 마지막에 item을 추가한다.
삭제
- Boolean remove(E item): item을 삭제한다. item이 존재하지 않는다면 false를, item이 존재하여 삭제되었다면 true를 반환한다.
- E removeAt(Int index): index에 있는 원소를 삭제한다.
- E removeFirst(): deque의 처음에 있는 원소를 삭제한다. deque가 비어있다면 NoSuchElementException이 발생한다.
- E removeLast(): deque의 마지막에 있는 원소를 삭제한다. deque가 비어있다면 NoSuchElementException이 발생한다.
- void clear(): deque를 초기화한다.
- Boolean isEmpty(): deque가 비어있는지 확인한다. 비어있다면 false를, 아니라면 true를 반환한다.
- Boolean contains(E item): deque에 아이템이 있는지 확인한다. 있다면 true를, 없다면 false를 반환한다.
- E first(): deque의 처음을 반환한다. deque가 비어있다면 NoSuchElementException이 발생한다.
- E last(): deque의 마지막을 반환한다. deque가 비어있다면 NoSuchElementException이 발생한다.
- E get(Int index): index에 있는 원소를 반환한다.
- Int indexOf(E element): element의 인덱스를 구해 반환한다.
'프로그래밍 언어 > Kotlin' 카테고리의 다른 글
코테용 코틀린 정리 (3) -배열, List, Set, Map (0) | 2024.06.24 |
---|---|
코테용 코틀린 정리(2) - 자료형 변환, 수학(max, min, sqrt, pow) (0) | 2024.06.22 |
코테용 코틀린 정리 (1) - 문자열(String) (0) | 2024.06.21 |