Verwendung der Stack-Datenstruktur in Kotlin
Heute werden wir die Verwendung von Stack in Kotlin lernen. Wir werden auch Standardfunktionen sehen, die zum Aktualisieren und Ändern des Kotlin-Stacks verwendet werden, darunter push
, pop
, peek
, search
und isEmpty
.
Wir werden uns auch eine bessere Alternative als den Stack in Kotlin ansehen.
Stapeldatenstruktur in Kotlin
Stack ist eine Datenstruktur, die einem Last-In-First-Out-Mechanismus (LIFO
) folgt. Das bedeutet, dass wir damit eine Datenbank mit mehreren Objekten erstellen können.
Die Verwendung von Stack ist in Java prominent, da es Teil des Java Collections Framework ist, aber wir können einen Stack in Kotlin erstellen, indem wir die Stack
-Bibliothek aus Java importieren.
Sobald die Bibliothek importiert ist, können wir einen Stapel erstellen und Objekte hinzufügen. Dieses Beispiel erstellt einen Stack namens cars
und verwendet dann die Methode addAll()
, um Automarkennamen hinzuzufügen.
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)
}
}
Ausgang:
Wie Sie sehen können, erstellt das obige Codebeispiel einen Stack und fügt vier Automarken hinzu. Als Nächstes werden wir uns die Verwendung einiger vordefinierter Funktionen zum Betrieb dieses Stacks ansehen.
push()
Funktion im Kotlin Stack
Die Funktion push()
ermöglicht das Hinzufügen eines neuen Objekts zum Stack. Das hinzugefügte Objekt wird standardmäßig an den Anfang des Stapels verschoben.
Im folgenden Beispiel verwenden wir die Funktion push()
und fügen dem oben erstellten Stack ein weiteres Objekt hinzu.
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)
}
}
Ausgang:
pop()
Funktion im Kotlin Stack
Wie der Name schon sagt, holt die Funktion pop()
das letzte Element heraus, das dem Stack hinzugefügt wurde. Daher wird der Last-In-First-Out-Mechanismus zuerst entfernt, da das Element zuletzt hinzugefügt wurde.
Wenn wir also das gleiche Beispiel betrachten und das Objekt oben auf dem Stapel entfernen möchten, z. B. Lamborghini
, können wir dies mit der Funktion pop()
tun. Hier ist der Code für dasselbe.
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 + ", ")
}
}
Ausgang:
peek()
Funktion im Kotlin Stack
Die Funktion peek()
ermöglicht das Einsehen in den Kotlin-Stack. Das bedeutet, dass wir das Objekt ganz oben im Stapel finden können, ohne es zu entfernen.
Das folgende Beispiel zeigt die Funktion peek()
. Als nächstes fügen wir dem Stack die Automarke Lamborghini
hinzu und drucken sie mit der Funktion peek()
aus.
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)
}
Ausgang:
search()
Funktion im Kotlin Stack
Wenn Sie ein bestimmtes Element im Stack suchen möchten, können wir die Funktion search()
verwenden. Wir können auch nach einem Objekt suchen, wenn wir uns nicht sicher sind, ob es sich im Stapel befindet oder nicht.
Wenn das gesuchte Element im Stack verfügbar ist, gibt die Funktion die Nummer zurück, an der es im Stack vorhanden ist. Aber wenn das Element nicht verfügbar ist, wird es -1
zurückgeben.
Schauen wir uns dieses Beispiel an, wo wir im Stack Autos
nach zwei Automarken suchen. Wir suchen nach den Elementen Ferrari
und 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"))
}
Ausgang:
In der obigen Ausgabe hat die erste search()
-Funktion 3
zurückgegeben, da sich der Ferrari an der 3
Position befindet. Aber die zweite search()
-Funktion gibt -1
zurück, da Jeep nicht im Stack vorhanden ist.
isEmpty()
Funktion im Kotlin Stack
Wenn wir versuchen, einige Funktionen auf einem leeren Stack auszuführen, wird ein Fehler ausgegeben. Wenn Sie beispielsweise die Funktion pop()
auf einem leeren Stack verwenden, wird java.util.EmptyStackException
ausgelöst.
import java.util.Stack
fun main(args: Array<String>){
var cars = Stack<String>();
cars.addAll(listOf())
var v = cars.pop()
}
Ausgang:
Daher ist es wichtig zu wissen, ob ein Stack leer ist. Sie können dies mit der unten angegebenen Funktion isEmpty()
erfahren.
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")
}
}
Ausgang:
Verwendung von ArrayDeque()
in Kotlin
Stack ist zwar eine nützliche Datenstruktur, es wird jedoch davon abgeraten, sie in Kotlin zu verwenden. Stattdessen wird empfohlen, Deque
zu verwenden. Deque bedeutet eine doppelseitige Warteschlange, die sowohl als Warteschlange als auch als Stapel arbeiten kann.
Die kotlin.collections.ArrayDeque
wurde in Kotlin 1.3.70 eingeführt. So können Sie Deque
anstelle des Kotlin-Stacks verwenden und die gleichen Operationen wie mit einem Stack ausführen.
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)
}
Ausgang:
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