Вы находитесь на странице: 1из 53

ArrayList

Lugar: Autor:
Alberto Alejandro Cortez
Curso:
Calidad de Software: Programacin
Modular y Anti-Patrones de Proyecto
Ao:

2010

Collecciones

Collection Framework
Un marco (framework) de trabajo es un conjunto de
interfaces y/o clases proporcionados para resolver un
problema determinado.
La plataforma Java define a una interfaz como medio para
implementar estndares e instrucciones.
El marco define los comportamientos de los objetos de una
coleccin utilizando una jerarqua de interfaces.
El marco define seis interfaces. Hay dos clases raz en la
parte superior de la jerarqua. stas son las interfaces
collection y map.

Jerarqua de herencia de Framework

Qu es una coleccin?
Es un nico objeto que representa a un grupo de objetos.
La clase con la que se crean los objetos que representan una
coleccin, fueron programadas por alguien y no forma parte
de la caracterstica del propio lenguaje.
Los objetos de la coleccin se denominan elementos.
Las colecciones tratan normalmente con muchos tipos de
objetos, todos los cuales descienden de un tipo padre comn.
(el tipo padre comn es la clase Object).
Para almacenar un int en un objeto Wrapper,

Su longitud es variable.
Pueden almacenar objetos de cualquier tipo de clase.
En la versin 1.5 de java se puede colocar una restriccin
con la cual se limite el tipo de objeto que almacene una
coleccin.
Ej. Collection <Cliente>
Ej. Map <Auto>

Diferencia con los arreglos


Arreglos:
- Son una caracterstica del propio
lenguaje java.
- Longitud fija una vez creados.
- Pueden almacenar tipo primitivos.
- Pueden almacenar solo tipos de datos
homogneos (todo int, todo long
todos objetos de la misma clase).

Interfaz Collection

Interfaz Collection
Este interfaz, como tipo, es utilizado para manipular colecciones cuando
se desea una generalidad mxima.
Este es el interfaz padre de Set y List. El framework no proporciona
ninguna implementacin suya, sino de sus subtipos.
La interfaz collection se utiliza para cualquier coleccin simple,
desordenada y que pueda tener duplicados. No hay restricciones.
Cualquier tipo de objeto puede utilizarse y pueden existir mltiples casos
del mismo.
Esta interfaz soporta mtodos para agregar, quitar, contar y verificar los
elementos de una coleccin.
En ocasiones una coleccin se denomina bag ("bolsa"), ya que no impone
ninguna regla.

Interfaz Collection

Interfaz List

Interfaz List
La interfaz List hereda de la interfaz Collection.
Establece estipulaciones adicionales a las del interfaz Collection en los
mtodos add, equals, hashCode, iterator y remove. Tambin aade nuevos
mtodos a los all declarados para un acceso posicional.
Las listas son colecciones ordenadas, y pueden tener duplicados.
El orden puede ser el orden natural, que es el orden en el cual los objetos se
agregaron a la lista.
Puesto que la lista est ordenada, los objetos de la misma pueden colocarse
en un ndice.
La primera posicin en una lista es 0.
Existen distintas implementaciones de esta interfaz: ArrayList,
LinkedList,Vector.

Interfaz List

Clases abstractas
Existen unas clases en java.util que empiezan por Abstract + nombre de
interface.
Estas son implementaciones parciales de dichos interfaces. Las
implementaciones de propsito general derivan de ellas.
Su intencin es proporcionar un punto de partida a la hora de construir nuestras
propias implementaciones de los interfaces bsicos, evitando la implementacin
de todos los mtodos definidos en ellos.
Collection:
Las clases abstractas son: AbstrcatCollection, AbstractList, AbstractSet,
AbstractSequentialList
Map:
Las clases abstractas son: AbstractMap

Clases abstractas

Clase ArrayList
Gestiona un arreglo interno de referencia a objetos Object.
Alberga elementos de tipo Object.
Se debe realizar un moldeado siempre que se quiera utilizar
un objeto del ArrayList.
Para crecer disminuir, crea nuevos arreglos y de esta forma
manipula el arreglo interno que posee.

Detalle de ArrayList

Clase ArrayList

Paquete
Las colecciones se encuentran en el paquete:
java.util de las libreras de java.
ArrayList forma parte del paquete java.util
desde la versin 1.2 del jdk

Ejemplo

Contenido del ejemplo


En el ejemplo se utilizan 3 clases:
* Persona
* Cliente (hereda de persona)
* Producto
Adems se utiliza una clase principal donde
se demuestra el uso de ArrayList.

Clase Persona

Clase Cliente

Clase Producto

Creo los objetos de las clases

Constructores
ArrayList posee 3 constructores de los cuales
usaremos los siguientes:
* public ArrayList(int initialCapacity)
* public ArrayList()

Constructores en ArrayList

Implementacin del Ejemplo

Comportamiento en memoria

Mtodo size
En nuestro ejemplo utilizaremos el mtodo:
size el cual devuelve la cantidad de
elementos que se guardaron en un ArrayList.

* public int size()

Mtodo size en ArrayList

Implementacin del Ejemplo

Salida por pantalla


Si corremos el programa, por pantalla nos
muestra: 0 (cero)
Pregunta:
Si creamos una coleccin y esta a su vez
creo un arreglo de 10 referencias Object?
No debera mostrar 10 por pantalla?
Respuesta:
El mtodo devuelve la cantidad de elementos
que no referencia a null.

Mtodo add
En nuestro ejemplo usaremos el mtodo add el cual esta
sobre cargado.
* public boolean add(Object o)
Agrega elementos al final del la lista.
* public void add(int index, Object element)
Agrega elementos en la posicin indicada.
Los elementos en la posicin index y los que estn por
encima se desplazan por encima del agregado.

Mtodo add en ArrayList

Implementacin del Ejemplo

Comportamiento en memoria

Recorrer un ArrayList
Para poder recorrer un coleccin se utiliza la interfaz
Iterator.
Esta interfaz provee los mtodos:
hasNext:
Devuelve true si el objeto iterador dispone de mas elementos
next:
La llamada repetitiva a next permite recorrer la coleccin
elemento por elemento. Cuando llega al final de la coleccin
lanza NoSuchElementException
remove:
Elimina el ultimo elemento devuelto por next

Interfaz Iterator

Como funciona Iterator


La clase ArrayList posee un mtodo llamado
iterator que devuelve un Iterator. El mtodo
lo hereda de AbstractList.

Se crea una variable de tipo Iterator (no se pueden crear


objetos por que es una interfaz) y utilizando el mtodo
iterator obtengo una referencia al iterador de la coleccin
que estoy utilizando.
Formato:
Iterator iter = coleccin.iterator();
while (iter.hasNext()){ //Preg si tiene elem. La coleccin
Object obj = iter.next(); //Obtengo el elemento
}

Antiguamente se utilizaba nextElement y hasMoreElement


de la interfaz Enumeration

Dijimos que el mtodo next de la interfaz Iterator devuelve


un Object, es decir, la clase madre de cualquier clase en
Java.
Pero que pasa si guarde clientes en la coleccin se supone
que quiero trabajar con clientes cuando lo recupere y no con
Object.
Para eso se debe realizar un casting al objeto que deseo
utilizar.
Ej.:

Clientes cliAux = (Clientes) iter.next();

Implementacin del Ejemplo

Agregar objetos diferentes


Como dijimos al comienzo una coleccin puede almacenar
objetos creados por diferente tipos de clases.
Lo que trae como inconveniente tener que definir como se
tratara el objeto que se recupera de la coleccin.
Es decir adems de realizar un casting tambin se debe
determinar a que clase pertenece ese objeto almacenado. La
forma de realizar este paso, es a travs del operador
instanceof el cual devuelve verdadero si un objeto pertenece
a una clase determinada.

Implementacin del Ejemplo

Mtodo add con parmetros


Este mtodo como vimos recibe dos parmetros, el ndice
donde se quiere colocar el objeto y el objeto.

* public void add(int index, Object element)


Funcionamiento:
Todos los elementos que estn en la posicin indicada y los
que se encuentran por encima de el son desplazados para
arriba para poder realizar el hueco que permita colocar el
nuevo elemento

Mtodo add con parmetros en


en ArrayList

Implementacin del Ejemplo

Comportamiento en memoria

Agregar objetos duplicados


Como dijimos un List puede almacenar objetos duplicados. Para lo cual
nuestro en nuestro ejemplo almacenaremos dos veces el mismo objeto

Comportamiento en memoria

Salida del programa por pantalla

FIN

Preguntas? consultas

Вам также может понравиться