Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / ArrayDeque: Cola doblemente terminada

ArrayDeque: Cola doblemente terminada

Autor jc mouse miércoles, enero 18, 2017

Una cola doblemente terminada o deque es una estructura de datos lineal que permite insertar y eliminar elementos por ambos extremos, es decir implementa en una única estructura las funcionalidades de las pilas (estructuras LIFO) y las colas (estructuras FIFO), en otras palabras, estas estructuras podrían implementarse fácilmente con una deque.

Pila

pila estructura

Cola

cola deque

Cola doblemente terminada

arraydeque

Java incluye la clase ArrayDeque miembro de Java Collections Framework, clase más robusta y completa que la clase Stack y tambien más rapida al ser usada como pila, más rápido que LinkedList cuando se utiliza como una cola . No tienen restricciones de capacidad, crecen según sea necesario, no admite elementos nulos.

Ejemplo

import java.util.ArrayDeque;

public class ArrayDequeTest {

    static ArrayDeque<Integer> deque;
    
    public static void main(String[] args) {
        // Crea un array vacio
        deque = new ArrayDeque<>();
        
        // usa metodo add() para agregar elementos 
        deque.add(45);
        deque.add(27);
        deque.add(98);
        deque.add(19);        
        print("ArrayDeque");
                
        deque.addFirst(99);
        print("Se agrega elemento ["+99+"] al principio");

        deque.addLast(77);
        print("Se agrega elemento ["+77+"] al final");
  
        //obtiene primer elemento de la cola
        int a = deque.getFirst();        
        //obtiene ultimo elemento de la cola
        int b = deque.getLast();        
        print("Primer elemento ["+a+"] .:. Ultimo elemento ["+b+"]");
        
        //elimina elementos
        deque.removeFirst();
        deque.removeLast();
        print("Elimina primer y ultimo elemento");        
        
        //obtiene primer elemento de la cola
        a = deque.peekFirst();
        //obtiene ultimo elemnto de la cola
        b = deque.peekLast();
        print("Primer elemento ["+a+"] Ultimo elemento ["+b+"]");
        
        //elimina y obtiene el primer elemento de la cola
        a = deque.pop();
        print("elimina Primer elemento ["+a+"]");
        
        deque.push(69);
        print("agrega elemento ["+69+"]");
        
        deque.removeLastOccurrence(98);
        print("elimina elemento ["+98+"]");
        
        System.out.println("Tamaño de la cola " + deque.size());        
    }
    
    
    public static void print(String text){
        System.out.println(text);
        deque.stream().forEach((number) -> {
            System.out.print("| " + number + " |");
        });
        System.out.println("\n");
    }
    
}

Salida en Pantalla

netbeans console

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Procedimientos almacenados en java

Procedimientos almacenados en java

En este tuto realizaremos la implementación y ejecución de procedimientos almacenados de MySQL en Java, si quieres darle...

Crear imagen dinamicamente y agregar a un objeto swing

Crear imagen dinamicamente y agregar a un objeto swing

Si bien se puede hacer uso de archivos de imagen (jpg, png, bmp, etc) en las aplicaciones java, también este te permite...

Cliente/Servidor en java y c#

Cliente/Servidor en java y c#

Como habíamos mencionado en un anterior post Ejemplo socket java Cliente/Servidor , el lenguaje de programación entre el...

Guardar reporte PDF directamente con Jasperreports

Guardar reporte PDF directamente con Jasperreports

Guardar un reporte PDF creado en iReport no es tan diferente de solo visualizarlo en pantalla. En este ejemplo se hace u...

Agregar tablas a los items de un JComboBox

Agregar tablas a los items de un JComboBox

En este post personalizaremos un componente JComboBox para que sus elementos acepten tablas (JTable) en lugar de texto s...

Buscar dispositivos con Java Media Framework

Buscar dispositivos con Java Media Framework

Java Media Framwork ademas de permitir reproducir archivos multimedia, tambien permite trabajar con dispositivos de capt...

Comparte lo que sabes

Categorias

Últimas entradas

En muchas ocasiones es necesaria la personalización de componentes java para que estos se adecuen a nuestros requerimien...

En este post mostramos como personalizar el Header (encabezado) de un componente JTable en Java colocando iconos, centra...

El JTable de Java es un gran componente para mostrar datos en una tabla de una forma rápida y sencilla, sin embargo en v...

En este post veremos un ejemplo sencillo de como descargar desde Internet archivos de cualquier tipo (*.jpg, *.png, *.gi...

Herramientas

Generador de Enlaces a Whatsapp