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étodo | Descripció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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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
1 2 3 4 |
PEEK: Tercero POP: Tercero POP: Segundo ISEMPTY: false |
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étodos | Descripció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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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
1 2 3 4 5 |
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 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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
1 2 |
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