Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

48
COLECCIONES EN JAVA

Transcript of Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

Page 1: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

COLECCIONES EN JAVA

Page 2: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

CONTENIDO• Vector y Stack

-Vector-Stack

• Iteradores de una colección -Enumeration -Iterator -ListaIterator• Interfaz Collection • Conclusiones

Page 3: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java
Page 4: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

CARACTERÍSTICAS DE LA CLASE VECTOR

• Java proporciona un grupo de clases que almacenan secuencias de objetos de cualquier tipo, son las colecciones. La clase Vector es una de estas colecciones.

• Un vector guarda objetos de cualquier tipo y crece dinámicamente.

•  El array donde almacena los elementos es de tipo Object.• Un vector es similar a un array, la diferencia estriba en

que un vector crece automáticamente cuando alcanza la dimensión inicial máxima.

• Para usar la clase Vector hemos de poner al principio del archivo del código fuente la siguiente sentencia

import java.util.*

Page 5: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

CONSTRUCTORES DE LA CLASE VECTOR

• PRIMER CONSTRUCTORVector vector= new vector(15,5);

El primer argumento del constructor determina el número de elementos (objetos) y el segundo argumento sirve para aumentar el tamaño del vector a 5 elementos mas en caso de que se sobrepaso el tamaño del vector.

• SEGUNDO CONSTRUCTOR: Vector vector= new vector(15);

Se determina el número de elementos del vector, y en caso de sobrepasar la dimension del vector, este se duplica.

Page 6: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

CONSTRUCTORES DE LA CLASE VECTOR

• TERCER CONSTRUCTOR:Vector vector= new vector();

La dimensión del vector por defecto es de 10, se duplica si se rebasa la dimensión inicial, por

ejemplo, cuando se pretende guardar once elementos.

Page 7: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÈTODOS DE LA CLASE VECTOR

• v.addElement(“cuatro”); agrega un elemento a continuación de otro

• v.insertElementAt(“tres”,2); Agrega un elemento en la posición determinada.

• v.elementAt(5)Se accede a un elemento del vector por la posición que

ocupa. Los métodos de acceso devuelven el elemento con el tipo Object, por esa razón es posible que sea necesario realizar una conversión

al tipo del objeto.

 

Page 8: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÈTODOS DE LA CLASE VECTOR

• void removeAllElements();Elimina todos los elementos

• boolean void removeElement (Object op);elimina la primera aparición de op y devuelve

true si realiza la eliminación.

• void removeElementAt(int indice); elimina elemento índice y el resto

se renumera.

Page 9: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÈTODOS DE LA CLASE VECTOR

• boolean contains(Object op);devuelve true si encuentra op

• int indexOf(Object op)devuelve la primera posición de op, -1 si no

está

Page 10: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

CARACTERÍSTICAS DE LA CLASE STACK

• La clase Stack es una clase de las llamadas de tipo LIFO (Last In - First Out, o último en entrar - primero en salir).

• Los elementos que almacena una colección stack son de tipo genérico (tipo Object), esto hace necesario realizar conversión de tipo cuando se extraen.

• Todas las operaciones se realizan por un únicopunto, el final (cabeza o top) de la pila.

• La clase Stack hereda el comportamiento de la clase vector.public class Stack extends Vector(){ }

Page 11: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÈTODOS DE LA CLASE STACK• public Stack();

Constructor, crea una pila vacía.

• public Object push(Object n); Añade el elemento n, devuelve n.

• public Object pop(); Devuelve elemento cabeza y lo quita de la pila.

• public Object peek(); Devuelve elemento cabeza sin quitarlo de la pila.

• public boolean empty();Devuelve true si la pila está vacía.

Page 12: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

Page 13: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

e

Page 14: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

ec

Page 15: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

eco

Page 16: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

econ

Page 17: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

econo

Page 18: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

econo

c

Page 19: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

econo

ce

Page 20: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer”

r

PUSH

econo

ce r

Page 21: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACKAnalizar mediante una pila si una palabra o frase es palíndromo.Resolución: Palabra= “reconocer” Tenemos la pila , ahora

desapilamos y comparamos con cada carácter de la palabra.

r

POP

econo

ce r

Page 22: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACK

Page 23: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE LA CLASE STACK

Page 24: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

ITERADORES DE UNA COLECCIÓN

• Un iterador permite acceder a cada elemento de una colección sin necesidad de conocer la estructura de la misma.

• Hay tres tipos de iteradores:• Enumeration• Iterator• ListIterator

Page 25: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

ENUMERATION• Declara métodos que recorren una colección.• Permite acceder a cada elemento de una

colección solo para lectura, no se puede modificar dichos elementos de la colección.

• Declaración:public interface Enumeration{

boolean hasMoreElements();Object nextlElement();

}

Page 26: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS DE ENUMERATION• Object nextElement();

En la primera llamada devuelve el primer elemento, en la siguientes devuelve el siguiente elemento de la colección.

boolean hasMoreElements(); Devuelve true si no se ha accedido a todos los elementos de la colección, por lo general se diseña un método para recorrer una colección y usar este método.

Page 27: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

PASOS PARA ACCEDER A LOS ELEMENTOS DE UNA COLECCIÓN MEDIANTE EL ENUMERATOR

• 1. Declarar una variable Enumerator. Enumeration enumearion.

• 2. Llamar al método elements() de la colección. enumera=colección.elements();

• 3. Diseñar el bucle que obtiene y procesa cada elemento.

• while(enumera.hasMoreElements()){ elemento=(tipoElemento) enumera.nextElement(); }

Page 28: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

Ejemplo de Enumeration

Page 29: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

Ejemplo de Enumeration

Page 30: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

Ejemplo de Enumeration• Salida:

Page 31: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

ITERATOR• Todo objeto colección se puede recorrer con este iterador.• Todas las colecciones tienen el métodos iterator() que devuelve un

objeto.• La interfaz Iterator permite no sólo acceder a los elementos, sino

también eliminarlos.

• Declaración:

public interface Iterator{boolean hasNext();Object next();void remove();}

Page 32: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS DEL ITERATOR• boolean hasNext();

devuelve true si quedan elementos no visitados.

• Object next();La primera llamada devuelve el primer elemento,según el orden

establecido por el iterador.• void remove();

Elimina de la colección el elemento obtenido por la última Llamada a next().

Sólo se puede llamar una vez después de next().

Si no ha habido una llamada a next(), levanta la excepción IllegalStateException.

Page 33: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DEL ITERATOR

Page 34: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DEL ITERATOR

Page 35: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DEL ITERATOR• Salida:

Page 36: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

ListIterator• Es específico de las colecciones que implementan la interfaz List.• Recorre elementos de una lista en ambas direcciones.• Elimina elementos de una lista.• Cambia elementos de una lista.• Añadir elementos de una lista.• Declaración:

public interface ListIterator extends Iterator{boolean hasNext();Object next();Int nextIndex();boolean hasPrevious();Object previous();Int previousIndex();void remove();void set(object):void add(Object);}

Page 37: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS DE ListIterator• Las colecciones con el comportamiento de Lista

disponen de los métodos listIterator()y listIterator(int i) que devuelve un objeto ListIterator, de tal forma que la primera llamada a next() devuelve el primer elemento, o el de índice i respectivamente.• Ejemplo:

ListLinked ld = new ListLinked();ListIterator iterBdir;iterBdir = ld.listIerator(); //elementos actual 0iterBdir = ld.listIterator(4);// elemento actual es el

4

Page 38: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS DE ListIterator• boolean hasPrevious();

• Devuelve true si hay un elemento anterior;• Objetc previous();

• Devuelve el elemento anterior.• void remove();

• elimina el último elemento obtenido por next(), o bien por previous()• void set(Objetct q);

• sustituye q por el último elemento obtenido por next(), o bien por previous().

• void add(Objetct q);• inserta q inmediatamente antes del elemento que devolvería la

llamada a next() y después del elemento que devolvería la llamada a previous()

Page 39: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE ListIterator

Page 40: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE ListIterator

Page 41: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

EJEMPLO DE ListIterator• SALIDA:

Page 42: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

INTERFAZ COLLECTION• Describe el comportamiento común de las

colecciones Java.• Hay tres tipos de

colecciones descritas por los interfaces List, Set y Map.

Page 43: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS PARA AÑADIR• boolean add(Object ob);

Devuelven true si la operación modifica la colección

• boolean add(Object ob);Si el elemento que se inserta ya estáen la colección, depende del tipo de ésta que se inserte o no.

Page 44: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS PARA ELIMINAR• boolean remove(Object o);

• Elimina un elemento

• boolean removeAll(Collection c); Se utiliza para eliminar todos los elementos de una lista que se contienen en la colección. 

• void clear(); List<String> lista = new ArrayList<String>();

lista.add(1,"Elemento Uno"); lista.add(2,"Elemento Dos"); lista.add("Elemento Tres"); lista.clear();

Page 45: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS DE BÚSQUEDA• boolean contains(Object o);

Devuelven true si la colección contiene al elemento o elementos argumento.

• boolean containsAll(Collection c);

• boolean equals(Object o);se recomienda implementar para comparar colecciones del mismo tipo; por ejemplo una lista con otra lista, y que devuelva true si son iguales en tamañoy en los elementos.

Page 46: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

MÉTODOS DE COLECCIÓN• Object[] toArray();

Devuelve un array con los elementos de la colección

• Iterator iterator(); Devuelve un objeto Iterator para recorrer la

colección.

• boolean isEmpty();Devuelve true si está vacía la colección.

• int size();• Devuelve el tamaño de la colección.

Page 47: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

CONCLUSIONES• Los iteradores nos ayudan para poder recorrer

clases de tipo collection como listas ligadas, arrays, vectores, tablas hash ,tree set , de manera mucho mas fácil sin conocer la forma en que se ha implementado una colección en particular y contiene ciertos métodos que facilitan el acceso a sus datos.

Page 48: Programación 3: Vector, stack, enumearator, iterator, listiterator en Java

BIBLIOGRAFÍA• Estructura de datos en java-Luis Joyanes

Aguilar,Ignacio Zahonero Martínez.