Blog de Programación sobre Java y Javascript
 
Estructura de Datos en Java: Stack, Queue y ArrayList

Estructura de Datos en Java: Stack, Queue y ArrayList

Stack Queu y ArrayList son estructuras de datos, una Estructura de Datos es una implementación de un ADT (Abstract data type o tipo de dato abstracto) en un lenguaje de programación, en este blog les presento algunos: Stack Queu y ArrayList

Stacks

Tipo de dato lineal y abstracto con capacidad predefinida o limitada, Sigue un orden particular para agregar o remover elementos, el típico ejemplo seria el de platos, estos se agregan al la pila cuando están limpios y se van agregando uno sobre otro, así queda el primer plato como ultimo.

El orden de eliminación/agregación puede ser LIFO (Ultimo en entrar, primero en salir) o FILO (Primero en entrar, ultimo en salir), En java se tiene implementado con la librería Util, veremos un ejemplo, pero antes los métodos de dicha clase son los siguientes

MétodoDescripción
void push(E)agrega un elemento sobre lo ultimo
E pop()toma el elemento de lo ultimo
E peek()mira el ultimo elemento insertado
boolean isEmpty()verifica si hay elementos en el Stack
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        
        final Stack<String> stack = new Stack<>();
        stack.push("Primero");
        stack.push("Segundo");
        stack.push("Tercero");
        System.out.println("PEEK: " + stack.peek());
        System.out.println("POP: " + stack.pop());
        System.out.println("POP: " + stack.pop());
        System.out.println("ISEMPTY: " + stack.isEmpty());
    }
}

Puedes compilar aquí: https://paiza.io/projects/DiCv1sUBKlLpkeL8GZ1-eg

Retorna: «Tercero» se muestra como ultimo, y este mismo se ingresó primero, luego con pop se va quitando de la pila

PEEK: Tercero
POP: Tercero
POP: Segundo
ISEMPTY: false
ejemplo de stacks con platos

Queue

Es también un tipo de dato con estructura lineal que sigue un orden FIFO (Primero en entrar, primero en salir) la diferencia con Stacks, es cómo son removidos, Queues están abiertos desde ambos finales, veremos un ejemplo en Java:

MétodosDescripción
void offer(E)agrega un elemento al final de la cola
E pop()toma el elemento al comienzo de la cola
E peek()mira el ultimo elemento al comienzo de la cola
boolean isEmpty()verifica si hay elementos en la cola
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        final Queue<String> colaPeliculas = new LinkedList<>();
        colaPeliculas.offer("El Señor de los Anillos: La comunidad del Anillo");
        colaPeliculas.offer("Harry Poter y la piedra filosofal");
        colaPeliculas.offer("Narnia: El león, la bruja y el ropero");
        while (!colaPeliculas.isEmpty())
        {
            if (colaPeliculas.peek().equals("El Señor de los Anillos: La comunidad del Anillo"))
            {
                colaPeliculas.offer("El Señor de los Anillos: Las dos torres");
                colaPeliculas.offer("El Señor de los Anillos: El retorno del Rey");
            }
            final String proximaPelicula = colaPeliculas.poll();
            System.out.println("Procesando " + proximaPelicula);
        }
    }
}

Puedes compilarlo aquí: https://paiza.io/projects/UOdRLEseVdD4TgoViy6weg?language=java

Retorna primero primero «El Señor de los Anillos: La comunidad del Anillo», siendo la misma cadena que se ingresó primero, y así sucesivamente con los demás

Procesando El Señor de los Anillos: La comunidad del Anillo
Procesando Harry Poter y la piedra filosofal
Procesando Narnia: El león la bruja y el ropero
Procesando El Señor de los Anillos: Las dos torres
Procesando El Señor de los Anillos: El retorno del Rey
Ejemplo de cola de atención

ArrayList

List en java provee la facilidad de mantener el orden ingresado, contiene métodos basado en índex para insertar, actualizar, eliminar y buscar elementos, pueden tener duplicados como almacenar null-

En java es una interface ubicada en el paquete util, y las clases que las implementan son ArrayList, LinkedList, Stack y Vector.

import java.util.*;
class Mountain{
    public Mountain(String name, int sizeMontain){
        this.name=name;
        this.sizeMontain=sizeMontain;
    }
    private String name;
    private int sizeMontain;
    
    public String getName(){
        return this.name;
    }
    
    public int getSizeMontain(){
        return this.sizeMontain;
    }
    
    public String toString(){
        return "Montain["+this.name+"-"+this.sizeMontain+"]";
    }
}
public class Main {
    public static void main(String[] args) throws Exception {
        new Main().go();
    }
    
    public void go() {
        ArrayList mountains = new ArrayList<Mountain>();
        mountains.add(new Mountain("Longs", 14255));
        mountains.add(new Mountain("Elbert", 14433));
        mountains.add(new Mountain("Maroon", 14156));
        mountains.add(new Mountain("Castle", 14265));
        System.out.println("as entered:\n" + mountains);
         
    }

}

Para compilar: https://paiza.io/projects/4WrkkGRcy6mf-myYdP7V5g?language=java

Se guarda la información y se muestra en el orden como se fue ingresando

Arrays:
[Montain[Longs-14255], Montain[Elbert-14433], Montain[Maroon-14156], Montain[Castle-14265]]

Fuente

-Data Structures and Abstractions with Java, Frank M. Carrano
-Data Structures and Algorithms made easy: Narasimha Karumanchi
-Head First Java: Kathy Sierra, Bert Bates, Trisha Gee
-Core Java Volume ||: Advanced Features, Cay S. Horstmann

Comments are closed.