Uso de la estructura de datos de pila en Kotlin

Kailash Vaviya 15 febrero 2024
  1. Apilar estructura de datos en Kotlin
  2. Uso de ArrayDeque() en Kotlin
Uso de la estructura de datos de pila en Kotlin

Hoy aprenderemos el uso de stack en Kotlin. También veremos funciones estándar utilizadas para actualizar y modificar la pila de Kotlin que incluye push, pop, peek, search y isEmpty.

También veremos una mejor alternativa que la pila en Kotlin.

Apilar estructura de datos en Kotlin

Stack es una estructura de datos que sigue un mecanismo de último en entrar, primero en salir (LIFO). Significa que podemos usarlo para crear una base de datos de múltiples objetos.

El uso de la pila es prominente en Java, ya que es parte del marco de las colecciones de Java, pero podemos crear una pila en Kotlin importando la biblioteca Stack de Java.

Una vez que se importa la biblioteca, podemos crear una pila y agregar objetos. Este ejemplo crea una pila llamada automóviles y luego usa el método addAll() para agregar nombres de marcas de automóviles.

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)
    }

}

Producción:

uso de la estructura de datos de pila en kotlin - salida uno

Como puede ver, el ejemplo de código anterior crea una pila y agrega cuatro marcas de automóviles. A continuación, veremos el uso de algunas funciones predefinidas para operar esta pila.

Función push() en la pila de Kotlin

La función push() permite añadir un nuevo objeto a la pila. El objeto agregado se mueve a la parte superior de la pila de forma predeterminada.

En el siguiente ejemplo, usaremos la función push() y agregaremos otro objeto a la pila que creamos anteriormente.

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)
    }

}

Producción:

uso de la estructura de datos de pila en kotlin - salida dos

Función pop() en la pila de Kotlin

Como su nombre lo indica, la función pop() saca el último elemento agregado a la pila. Por lo tanto, el mecanismo último en entrar, primero en salir se elimina primero porque el elemento se agregó en último lugar.

Entonces, considerando el mismo ejemplo, si queremos eliminar el objeto en la parte superior de la pila, es decir, Lamborghini, podemos hacerlo usando la función pop(). Aquí está el código para el mismo.

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 + ", ")
    }

}

Producción:

uso de la estructura de datos de pila en kotlin - salida tres

Función peek() en la pila de Kotlin

La función peek() permite echar un vistazo a la pila de Kotlin. Significa que podemos encontrar el objeto en la parte superior de la pila sin quitarlo.

El siguiente ejemplo muestra la función peek(). A continuación, agregaremos la marca de automóvil Lamborghini a la pila y la imprimiremos usando la función 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)

}

Producción:

uso de la estructura de datos de pila en kotlin - salida cuatro

Función buscar() en la pila de Kotlin

Si desea buscar un elemento específico en la pila, podemos usar la función buscar(). También podemos buscar un objeto si no estamos seguros de si está en la pila o no.

Si el elemento buscado está disponible en la pila, la función devolverá el número donde está presente en la pila. Pero si el elemento no está disponible, devolverá -1.

Veamos este ejemplo en el que buscamos dos marcas de automóviles en la pila de automóviles. Buscaremos los elementos Ferrari y 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"))

}

Producción:

uso de la estructura de datos de pila en kotlin - salida cinco

En el resultado anterior, la primera función buscar() devolvió 3 ya que el Ferrari está en la posición 3ra. Pero la segunda función buscar() devuelve -1 ya que Jeep no está en la pila.

Función isEmpty() en la pila de Kotlin

Si intentamos realizar algunas funciones en una pila vacía, arroja un error. Por ejemplo, usar la función pop() en una pila vacía genera java.util.EmptyStackException.

import java.util.Stack

fun main(args: Array<String>){

    var cars = Stack<String>();
    cars.addAll(listOf())
    var v = cars.pop()

}

Producción:

uso de la estructura de datos de pila en kotlin - salida seis

Por lo tanto, es esencial saber si una pila está vacía. Puede conocer esto usando la función isEmpty() como se indica a continuación.

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")
    }
}

Producción:

uso de la estructura de datos de pila en kotlin - salida siete

Uso de ArrayDeque() en Kotlin

Si bien la pila es una estructura de datos útil, no se recomienda usarla en Kotlin. En su lugar, se recomienda utilizar Deque. Deque significa una cola de dos extremos, que puede funcionar como una cola y una pila.

El kotlin.collections.ArrayDeque se introdujo en Kotlin 1.3.70. Así es como puede usar Deque en lugar de la pila de Kotlin y realizar las mismas operaciones que con una pila.

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)

}

Producción:

uso de la estructura de datos de pila en kotlin - salida ocho

Kailash Vaviya avatar Kailash Vaviya avatar

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