Listas en Java

Listas - List


Las listas son una colección ordenada (también conocida como una secuencia ). El usuario de este interfaz tiene un control preciso sobre dónde en la lista se inserta cada elemento. El usuario puede acceder a los elementos por su índice de número entero (posición en la lista), y la búsqueda de elementos en la lista.
A diferencia de conjuntos, listas suelen permitir los elementos duplicados. Más formalmente, las listas suelen permitir pares de elementos e1 y e2 tal que e1.equals (e2) , y por lo general permiten que múltiples elementos nulos si permiten elementos nulos en absoluto. No es inconcebible que alguien podría querer implementar una lista que prohíbe duplicados, lanzando excepciones de tiempo de ejecución cuando el usuario intenta insertarlas, pero esperamos que este uso sea raro.
La Lista interfaz coloca estipulaciones adicionales, más allá de los especificados en el Colección de la interfaz, en los contratos del iterador , agregar , quitar , es igual , y hashCode métodos. Declaraciones de otros métodos heredados también se incluyen aquí por conveniencia.
La Lista interfaz proporciona cuatro métodos para posicional (indexado) el acceso a elementos de la lista. Listas (como matrices Java) son cero basado. Tenga en cuenta que estas operaciones pueden ejecutar en un tiempo proporcional al valor de índice para algunas implementaciones (la LinkedList clase, por ejemplo). Por lo tanto, iterar sobre los elementos de una lista es normalmente preferible indexar a través de él si la persona que llama no sabe la implementación.
La Lista de interfaz proporciona un iterador especial, llamado un ListIterator , que permite la inserción del elemento y de reemplazo, y el acceso bidireccional, además de las operaciones normales de que el iterador interfaz proporciona. Se proporciona un método para obtener un iterador lista que comienza en la posición especificada en la lista.
La Lista interfaz proporciona dos métodos para buscar un objeto especificado. Desde un punto de vista de rendimiento, estos métodos deben utilizarse con precaución. En muchas implementaciones van a realizar costosas búsquedas lineales.
La Lista interfaz proporciona dos métodos para insertar y extraer múltiples elementos en un punto arbitrario en la lista de manera eficiente.

Modificador y tipo Metodo
boolean add(E e) Adiciona el elemento especificado al final de esta lista (operación opcional).
void add(int index, E element) Inserta el elemento especificado en la posición especificada en esta lista (operación opcional).
void clear() Elimina todos los elementos de esta lista (operación opcional).
boolean contains(Object o) Devuelve verdadero si esta lista contiene el elemento especificado.
boolean equals(Object o) Compara el objeto especificado con algun elemento de la lista.
E get(int index) Devuelve el elemento en la posición especificada en esta lista.
boolean isEmpty() Devuelve verdadero si esta lista no contiene elementos.
Iterator iterator()Devuelve un iterador sobre los elementos de esta lista en la secuencia correcta.
E remove(int index)Elimina el elemento en la posición especificada en esta lista (operación opcional).
boolean remove(Object o)Elimina la primera aparición del elemento especificado de esta lista, si está presente (operación opcional).
E set(int index, E element)Reemplaza el elemento en la posición especificada en esta lista con el elemento especificado (operación opcional).
int size()Devuelve el número de elementos en esta lista.


Clase List Documentación JAVA


Ver vídeo del Proyecto
Descargar Proyecto Listas

Colas en Java

Colas - Queue

Las Colas son Estructuras de Datos, que a diferencia de las Pilas estas trabajan con una estructura de tipo FIFO (First In, First Out), el primero en entrar sera el primero en salir. Podriamos pensar en el funcionamiento que tienen las colas en los Supermercados, o en los Bancos, o en las Estaciones de Servicios, conforme va llegando el cliente se va encolando en el ultimo que esta en la cola, y el primero que esta en la cola es el primero que recibe el servicio.
Las Colas son secuencia de elementos o colección de objeto en la que la insercion de los datos se realiza por un extremo que es el final de la cola(ultimo cliente que llega a la cola), y la operacion de extraccion por el inicio de la cola
JAVA nos proporciona su interfaz Queue(Colas en español), con los metodos necesarios para poder crear y manipular las colas en java.
Las Operaciones basicas para el manejo de una Cola son:
  • offer(E item)
    • Este metodo tienen como parametro un objeto, que es el que vamos a introducir en nuestra Cola.
  • poll()
    • Este metodo nos permite eliminar o sacar un elemento de nuestra Cola, nos retorna el objeto eliminado.
  • peek()
    • Este metodo nos sirve de consulta, nos retorna el primer elemento de nuestra Cola, sin eliminarlo.

Clase LinkedList

La interfaz Queue implementa a la Clase LinkedList, la cual nos permite manejar una cola como una lista. Implementa todas las operaciones de lista opcional, y permiten todos los elementos (incluyendo null).
Tenga en cuenta que esta aplicación no está sincronizado. Si varios subprocesos tienen acceso a una lista enlazada al mismo tiempo, y al menos uno de los hilos modifica la lista estructuralmente, que debe ser sincronizado externamente. (Una modificación estructural es cualquier operación que añade o elimina uno o más elementos;. Simplemente estableciendo el valor de un elemento no es una modificación estructural) Esto se realiza generalmente mediante la sincronización en algún objeto que encapsula naturalmente la lista. Si no existe tal objeto, la lista debe ser "envuelto" con el Collections.synchronizedList método. Esto se hace mejor a la hora de la creación, para evitar el acceso no sincronizado accidental a la lista:

List list = Collections.synchronizedList(new LinkedList(...));

Los iteradores devueltos por esta clase de iterador y ListIterator métodos son a prueba de rápido : si la lista se modifica estructuralmente en cualquier momento después de crear el iterador, de ninguna manera, excepto a través del propio Iterator quitar o agregar métodos, el iterador lanzará un ConcurrentModificationException . Así, en la cara de la modificación concurrente, el iterador falla rápida y limpia, en lugar de correr el riesgo de comportamiento arbitrario, no determinista en un tiempo indeterminado en el futuro.

Para poder crear Colas en JAVA tenemos que importar la clase a nuestro proyecto, y luego crearnos un objeto para poder acceder a los metodos de la clase.

import java.util.Queue;

 public class MyClase {
    
    private Queue cola;

    public MyClase() {
        this.cola = new LinkedList();
    }
 }
 
Throws exception Retorna un valor
Insertar add(e) offer(e)
Remover remove() poll()
Examinar element() peek()

Clase Queue Documentación JAVA


Ver video del Proyecto
Descarga Proyecto Colas

Pilas en Java

Pilas - Stack

Las Pilas (Stack en ingles), son estructuas de datos en donde el acceso a sus elementos es de tipo LIFO (Last In First Out), en donde el ultimo elemento en entrar, es el primero en salir. Podemos pensar en una pila de libros, en donde el acomodo de los libros se hace poniendo un libros, encimo del otro, y si quisieramos sacar un libro tendriamos que hacerlo desde el ultimo libro que hemos acomodado hasta encontrar el libro que deseamos. De igual manera trabajan las Pilas, sus elementos se van guardando o apilando uno encima de otro, y cuando queremos sacar un elemento, se procede a retirar el ultimo elemento que se a insertado en la pila.

La interfas Stack, que es la que nos proporciona JAVA para poder crear pilas, extiende de la Clase Vector y por lo tanto como ya sabemos esta hereda todos los metodos que tienen la Clase Vector. Esta interfas contiene 5 operaciones que nos permite tratar un Vector como un Pila.

Las Operaciones basicas para el manejo de una Pila son:
  • Push(E item)
    • Este metodo tienen como parametro un objeto, que es el que vamos a introducir en nuestra pila.
  • pop()
    • Este metodo nos permite eliminar un elemento de nuestra pila, nos retorna el objeto eliminado.
  • peek()
    • Este metodo nos sirve de consulta, nos retorna el elemento que se encuentra en la cima o en el tope de nuestra pila sin eliminarlo.
  • empty()
    • Este metodo nos devuelve un boolean, que nos indica si la pila esta o no esta vacia.
  • search(Object o)
    • Devuelve la posición en base 1, donde un objeto esta en la pila.

Esta interfas Stack la podemos encontrar en el paquete Java.util.Stack, si queremos utilizar esta interfas en nuestro proyecto primero tenemos que importarla.
import java.util.Stack;
Para poder utilizar los metodos de esta interfas, tenemos que crearnos un objeto de esta clase.
Stack pila = new Stack(); 
En el siguiente recuadro, podemos ver los metodos que nos permiten insertar y eliminar elementos de una pila.
Throws exception Retorna un valor
Insertar add(e) push(E)
Remover remove(E) pop()
Examinar get(index) peek()
Luego nos podemos crear un metodo que nos va a permitir dibujar nuestra pila y ver el funcionamiento y comportamiento de una manera grafica.
public String dibujar() {
        String s = "";
        if(!Vacia()){
            for (int i=0; i < pila.size(); i++) {
                s =  pila.get(i)+ "\n" + s; 
            }
        }
        return s;
    }
Clase Stack Documentación JAVA

Ver vídeo del Proyecto
Descarga Proyecto Pilas