Kotlin에서 스택 데이터 구조 사용
오늘은 코틀린에서 스택을 사용하는 방법에 대해 알아보겠습니다. 또한 push
, pop
, peek
, search
및 isEmpty
를 포함하는 Kotlin 스택을 업데이트하고 변경하는 데 사용되는 표준 함수도 볼 수 있습니다.
또한 Kotlin의 스택보다 더 나은 대안을 살펴볼 것입니다.
Kotlin의 스택 데이터 구조
스택은 후입선출(LIFO) 메커니즘을 따르는 데이터 구조입니다. 이는 여러 개체의 데이터베이스를 만드는 데 사용할 수 있음을 의미합니다.
스택은 Java 컬렉션 프레임워크의 일부이므로 Java에서 사용이 두드러지지만 Java에서 Stack
라이브러리를 가져와서 Kotlin에서 스택을 생성할 수 있습니다.
라이브러리를 가져오면 스택을 생성하고 개체를 추가할 수 있습니다. 이 예제에서는 cars
라는 스택을 생성한 다음 addAll()
메서드를 사용하여 자동차 브랜드 이름을 추가합니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf("Mercedes-Benz", "BMW", "Ferrari", "Porsche"))
for(c in cars){
println(c)
}
}
출력:
보시다시피 위의 코드 예제는 스택을 생성하고 4개의 자동차 브랜드를 추가합니다. 다음으로 사전 정의된 함수를 사용하여 이 스택을 작동하는 방법을 살펴보겠습니다.
Kotlin 스택의 push()
함수
push()
함수를 사용하면 스택에 새 객체를 추가할 수 있습니다. 추가된 개체는 기본적으로 스택의 맨 위로 이동됩니다.
아래 예제에서는 push()
함수를 사용하고 위에서 생성한 스택에 다른 객체를 추가합니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf("Mercedes-Benz", "BMW", "Ferrari", "Porsche"))
cars.push("Lamborghini")
for(c in cars){
println(c)
}
}
출력:
Kotlin 스택의 pop()
함수
이름에서 알 수 있듯이 pop()
함수는 스택에 추가된 마지막 요소를 팝아웃합니다. 따라서 마지막에 추가된 요소 때문에 후입선출 메커니즘이 먼저 제거됩니다.
따라서 동일한 예를 고려하여 스택 맨 위에 있는 객체, 즉 Lamborghini
를 제거하려면 pop()
함수를 사용하여 제거할 수 있습니다. 여기에 동일한 코드가 있습니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf("Mercedes-Benz", "BMW", "Ferrari", "Porsche"))
cars.push("Lamborghini")
for(c in cars){
println(c)
}
var poppedCar = cars.pop()
println("\nThe car brand that is popped out is: " + poppedCar)
println("\nThe new list of car brands is: ")
for(c in cars){
print(c + ", ")
}
}
출력:
Kotlin 스택의 peek()
함수
peek()
함수를 사용하면 Kotlin 스택을 엿볼 수 있습니다. 그것은 우리가 그것을 제거하지 않고 스택의 맨 위에 있는 객체를 찾을 수 있다는 것을 의미합니다.
아래 예제는 peek()
함수를 보여줍니다. 다음으로 자동차 브랜드 Lamborghini
를 스택에 추가하고 peek()
함수를 사용하여 인쇄합니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf("Mercedes-Benz", "BMW", "Ferrari", "Porsche"))
cars.push("Lamborghini")
for(c in cars){
println(c)
}
var peekCar = cars.peek()
println("\nPeeked Car is: " + peekCar)
}
출력:
Kotlin Stack의 search()
함수
스택에서 특정 요소를 검색하려면 search()
기능을 사용할 수 있습니다. 스택에 있는지 여부가 확실하지 않은 경우 개체를 검색할 수도 있습니다.
검색된 요소가 스택에서 사용 가능한 경우 함수는 스택에서 해당 요소가 있는 번호를 반환합니다. 그러나 요소를 사용할 수 없는 경우 -1
을 반환합니다.
car
스택에서 두 개의 자동차 브랜드를 검색하는 이 예를 살펴보겠습니다. Ferrari
및 Jeep
요소를 찾습니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf("Mercedes-Benz", "BMW", "Ferrari", "Porsche"))
cars.push("Lamborghini")
for(c in cars){
println(c)
}
println("\nLooking for Ferrari: " + cars.search("Ferrari"))
println("Looking for Jeep: " + cars.search("Jeep"))
}
출력:
위의 출력에서 첫 번째 search()
함수는 Ferrari가 3rd
위치에 있으므로 3
을 반환했습니다. 그러나 두 번째 search()
함수는 Jeep이 스택에 없기 때문에 -1
을 반환합니다.
Kotlin 스택의 isEmpty()
함수
빈 스택에서 일부 기능을 수행하려고 하면 오류가 발생합니다. 예를 들어 빈 스택에서 pop()
함수를 사용하면 java.util.EmptyStackException
이 발생합니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf())
var v = cars.pop()
}
출력:
따라서 스택이 비어 있는지 여부를 아는 것이 중요합니다. 아래와 같이 isEmpty()
함수를 사용하여 알 수 있습니다.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf("Mercedes-Benz", "BMW", "Ferrari", "Porsche", "Lamborghini"))
if(cars.isEmpty()){
println("This stack is empty")
}
else{
println("This stack is not empty")
}
}
출력:
Kotlin에서 ArrayDeque()
사용
스택은 유용한 데이터 구조이지만 Kotlin에서는 사용하지 않는 것이 좋습니다. 대신 Deque
를 사용하는 것이 좋습니다. Deque는 큐와 스택으로 모두 작동할 수 있는 양방향 큐를 의미합니다.
kotlin.collections.ArrayDeque
는 Kotlin 1.3.70에서 도입되었습니다. Kotlin 스택 대신 Deque
를 사용하여 스택과 동일한 작업을 수행하는 방법은 다음과 같습니다.
import java.util.ArrayDeque
fun main(args: Array<String>){
var stackExample = ArrayDeque<String>()
stackExample.push("Mercedes-Benz")
stackExample.push("BMW")
stackExample.push("Ferrari")
stackExample.push("Porsche")
println(stackExample)
println("\n" + stackExample.isEmpty())
println("\n" + stackExample.pop())
println("\n" + stackExample)
stackExample.push("Lamborghini")
println("\n" + stackExample)
}
출력:
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn