programación 3: vector, stack, enumearator, iterator, listiterator en java

Post on 14-Apr-2017

86 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

COLECCIONES EN JAVA

CONTENIDO• Vector y Stack

-Vector-Stack

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

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.*

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.

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.

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.

 

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.

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á

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(){ }

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.

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

r

PUSH

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

r

PUSH

e

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

r

PUSH

ec

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

r

PUSH

eco

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

r

PUSH

econ

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

r

PUSH

econo

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

r

PUSH

econo

c

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

r

PUSH

econo

ce

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

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

EJEMPLO DE LA CLASE STACK

EJEMPLO DE LA CLASE STACK

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

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();

}

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.

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(); }

Ejemplo de Enumeration

Ejemplo de Enumeration

Ejemplo de Enumeration• Salida:

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();}

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.

EJEMPLO DEL ITERATOR

EJEMPLO DEL ITERATOR

EJEMPLO DEL ITERATOR• Salida:

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);}

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

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()

EJEMPLO DE ListIterator

EJEMPLO DE ListIterator

EJEMPLO DE ListIterator• SALIDA:

INTERFAZ COLLECTION• Describe el comportamiento común de las

colecciones Java.• Hay tres tipos de

colecciones descritas por los interfaces List, Set y Map.

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.

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();

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.

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.

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.

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

Aguilar,Ignacio Zahonero Martínez.

top related