Está en la página 1de 9

Programacin Avanzada Orientada a Objetos

Prof: Jos Antonio Cruz Zamora

Alumno: Ivn Uriel Martnez Garca

UNIDAD II
Cap. 19 - Colecciones

Sntesis

09 / 03 / 2015

Introduccin:
En este captulo trataremos el marco de colecciones de Java, las cuales sirven
para manejar la estructura de datos en un nivel ms alto (no slo crear y manipular
de manera laboriosa y dinmica cada elemento de las estructuras de datos),
adems de que contiene interfaces y algoritmos pre empaquetados para manipular
esas estructuras.
Algunos ejemplos de colecciones son las tarjetas que contiene un mazo de cartas,
la msica que esta almacenada en la computadora, los miembros de un equipo
deportivo, registros que se tienen, etc.
Tambin se trataran los genricos en el marco de colecciones de Java Con las
colecciones los programadores utilizan las estructuras de datos existentes sin
tener que preocuparse por la menar en que estas se implementan.
Con esto obtenemos un ejemplo muy bueno que es la reutilizacin de cdigo,
adems de que los programadores pueden codificar ms rpido y esperar un
excelente rendimiento, maximizando la velocidad de ejecucin y maximizando el
consumo de memoria. Las interfaces describen las capacidades de cada tipo de
coleccin, las clases de implementacin, los algoritmos que procesan a las
colecciones y los denominados iteradores, junto con la sintaxis de la instruccin for
mejorada para recorrer las colecciones.
Este marco de Java proporciona componentes reutilizables, listos para utilizarse
(sin tener que escribir sus propias clases de colecciones, aunque se puede hacer)
que estn estandarizados, de manera que las aplicaciones puedan compartirlas
fcilmente sin tener que preocuparse por los detalles relacionados con su
implementacin. Este marco de colecciones tambin fomenta an ms la
reutilizacin. A medida que se desarrollen estructuras de datos y algoritmos que
se ejecuten a este marco de trabajo, una extensa base de programadores estar
ya familiarizada con las interfaces y algoritmos implementados por esas
estructuras de datos.

Conceptos.
Una coleccin es una estructura de datos (un objeto) que puede guardar
referencias a otros objetos. Por lo general, las colecciones contienen referencias a
objetos, los cuales son todos del mismo tipo. Las interfaces del marco de
trabajo de colecciones declaran las operaciones que se deben realizar en
forma genrica en varios tipos de colecciones.

Las clases y las interfaces del marco de trabajo de colecciones se encuentran en


el paquete java.util

La clase Arrays.
La clase Arrays proporciona mtodos static para manipular arreglos,
incluyendo a sort para ordenar un arreglo, a binarySearch para buscar en un
arreglo ordenado, a equals para comparar arreglos y a fill para colocar elementos
en un arreglo. El mtodo asList de Arrays devuelve una vista List de un arreglo, la
cual permite a un programa manipular el arreglo como si fuera un objeto List.
Cualquier modificacin realizada a travs de la lista List modifica el arreglo, y
cualquier modificacin al arreglo modifica a la vista List. El mtodo size obtiene el
nmero de elementos en un objeto List, y el mtodo get devuelve un elemento del
objeto List.

La interfaz Collec y la clase Collections.


La interfaz Collection es la interfaz raz en la jerarqua de colecciones, a partir de
la cual se derivan las interfaces Set y List. La interfaz Collection contiene
operaciones masivas para agregar, borrar, comparar y retener objetos en una
coleccin. Tambien proporciona un mtodo llamado iterator para obtener Iterator.

Listas.
Un objeto List es un objeto Collection, que puede contener elementos duplicados.
La interfaz List se implementa mediante las clases ArrayList, LlinkedList y Vector.
La clase ArrayList es una implementacin de tipo arreglo de un objeto List,
que puede cambiar su tamao. Un objeto LinkedList es una implementacin tipo
lista enlazad en un objeto List.
El mtodo hasNext de Iterator determina si un objeto Collection contiene otro
elemento. El mtodo next devuelve una referencia al siguiente objeto en el objeto
Collections y avanza un objeto Iterator.
El mtodo subList devuelve una vista de una porcin de un objeto List. Cualquier
modificacin realizada en esta vista se realiza tambin en el objeto List.
El mtodo clear elimina elementos de un objeto List.
El mtodo toArray devuelve el contenido de una coleccin, en forma de un arreglo.

La clase Vector maneja arreglos que pueden cambiar su tamao en forma


dinmica. En cualquier momento dado,
un objeto Vector contiene un nmero de elementos menor o igual a su capacidad.
Si un objeto Vector necesita crecer, aumenta en base a su incremento de
capacidad. Si no se especifica un incremento de capacidad, Java duplica el
tamao del objeto Vector cada vez que se requiere una capacidad adicional. La
capacidad predeterminada es de 10 elementos.
El mtodo add de Vector agrega su argumento al final del objeto Vector. El mtodo
insertElementAt inserta un elemento en la posicin especificada. El mtodo set
establece el elemento en una posicin especfica.
El mtodo remove de Vector elimina del objeto Vector la primera ocurrencia de su
argumento. El mtodo removeAllElements elimina todos los elementos del objeto
Vector El mtodo removeElementAt elimina el elemento en el ndice especificado.
El mtodo firstElement de Vector devuelve una referencia al primer elemento. El
mtodo lastElement devuelve una referencia al ltimo elemento.
El mtodo contains de Vector determina si el objeto Vector contiene la
claveBusqueda especifica cada como argumento. El mtodo indexOf de Vector
obtiene el ndice de la primera ubicacin de su argumento. El mtodo devuelve -1
si el argumento no se encuentra en el objeto Vector.
El mtodo isEmpty de Vector determina si el objeto Vector est vaco. Los
mtodos size y capacity determinan el nmero de elementos actuales en el objeto
Vector, y el nmero de elementos que pueden almacenarse en el objeto Vector sin
asignar ms memoria, respectivamente.

Algoritmos de colecciones
Los algoritmos sort, binarySearch, reverse, shuffle, fill y copy operan en objetos
List. Los algoritmos min y max operan en objetos Collection. El algoritmo reverse
invierte los elementos de un objeto List, el algoritmo fill establece cada elemento
del objeto List a un objeto Object especificado, y copy copia elementos de un
objeto List a otro objeto List. El algoritmo sort ordena los elementos de un objeto
List.
El algoritmo addAll anexa a una coleccin todos los elementos en un arreglo, el
algoritmo frequency calcula cuntos elementos en la coleccin son iguales al
elemento especificado, y disjoint determina si dos colecciones tienen elementos en
comn.

Los algoritmos min y max buscan los elementos mayor y menor en una coleccin.
La interfaz Comparator proporciona un medio para ordenar los elementos de un
objeto Collection en un orden distinto a su orden natural.
El mtodo reverseOrder de Collections devuelve un objeto Comparator que puede
usarse con sort para ordenar elementos de una coleccin en forma inversa.
El algoritmo shuffle ordena al azar los elementos de un objeto List.
El algoritmo binarySearch localiza un objeto Object en un objeto List ordenado.

Conjuntos
Un objeto Set es un objeto Collection que no contiene elementos duplicados.
HashSet almacena sus elementos en una tabla de hash. TreeSet almacena sus
elementos en un rbol.
La interfaz SortedSet extiende a Set y representa un conjunto que mantiene sus
elementos ordenados. La clase TreeSet implementa a SortedSet.
El mtodo headSet de TreeSet obtiene una vista de un objeto TreeSet que es
menor a un elemento especificado.
El mtodo tailSet obtiene una vista que es mayor o igual a un elemento
especificado. Cualquier modificacin realizada a la vista se realiza al objeto
TreeSet.

Mapas
Los objetos Map asocian claves con valores y no pueden contener claves
duplicadas. Los objetos Map difieren de los objetos Set en cuanto a que los
objetos Map contienen tanto claves como valores, mientras que los objetos Set
slo contienen valores. Los objetos HashMap almacenan elementos en una tabla
de hash, y los objetos TreeMap almacenan elementos en un rbol.
Los objetos Hashtable y HashMap almacenan elementos en tablas de hash, y los
objetos TreeMap almacenan elementos en rboles.
HashMap es una clase genrica que recibe dos argumentos de tipo. El primer
argumento de tipo especifica el tipo de la clave, y el segundo especifica el tipo de
valor.

El mtodo put de HashMap agrega una clave y un valor en un objeto HashMap. El


mtodo get localiza el valor asociado con la clave especificada. El mtodo isEmpty
determina si el mapa est vaco.
El mtodo keySet de HashMap devuelve un conjunto de las claves. Los mtodos
size e isEmpty de map devuelven el nmero de pares clave-valor en el objeto
Map, y un valor booleano que indica si el objeto Map est vaco, respectivamente.
La interfaz SortedMap extiende a Map y representa un mapa que mantiene sus
claves en orden. La clase TreeMap implementa a SortedMap.

La clase Properties
Un objeto Properties es un objeto Hashtable persistente. La clase Properties
extiende a Hashtable.
El constructor de Properties sin argumentos crea una tabla Properties vaca sin
propiedades predeterminadas.
Tambin hay un constructor sobrecargado que recibe una referencia a un objeto
Properties predeterminado que contiene valores de propiedades predeterminados.
El mtodo setProperty de Properties especifica el valor asociado con el argumento
tipo clave. El mtodo getProperty de Properties localiza el valor de la clave
especificada como argumento. El mtodo store guarda el contenido del objeto
Properties en el objeto OutputStream especificado como el primer argumento. El
mtodo load restaura el contenido del objeto Properties del objeto InputStream
que se especifica como el argumento.

Colecciones sincronizadas
Las colecciones del marco de trabajo de colecciones estn desincronizadas. Las
envolturas de sincronizacin se proporcionan para las colecciones a las que
pueden acceder varios subprocesos en forma simultnea.

Colecciones no modificables
La API Collections proporciona un conjunto de mtodos public static para convertir
colecciones en versiones no modificables. Las envolturas no modificables lanzan
excepciones UnsupportedOperationException si hay intentos de modificar la
coleccin.

Implementaciones abstractas.
El marco de trabajo de colecciones proporciona varias implementaciones
abstractas de las interfaces de colecciones, a partir de las cuales el programador
puede crear rpidamente implementaciones personalizadas completas.

Conclusiones
En este captulo se present el marco de trabajo de colecciones de Java. Aprendi
a utilizar la clase Arrays para realizar manipulaciones con arreglos. Conoci la
jerarqua de colecciones y aprendi a utilizar las interfaces del marco de trabajo de
colecciones para programar con las colecciones mediante el polimorfismo.
Tambin conoci varios algoritmos predefinidos para manipular colecciones. En el
siguiente captulo presentaremos los applets de Java, los cuales son programas
en Java que, por lo general, se ejecutan en un explorador Web. Empezaremos con
applets de ejemplo que vienen con el JDK, y despus le mostraremos cmo
escribir y ejecutar sus propios applets.

Cuestionario de autoevaluacin.

19.1 Complete las siguientes oraciones:


a) Un(a) Iterator se utiliza para recorrer una coleccin y puede eliminar elementos
de la coleccin, durante la iteracin.
b) Para acceder a un elemento en un objeto List, se utiliza el ndice del elemento.
c) A los objetos List se les conoce algunas veces como secuencias
d) Las clases ArrayList y Vector de Java proporcionan las herramientas de
estructuras de datos tipo arreglo, que pueden cambiar su tamao en forma
dinmica.
e) Si usted no especifica un incremento de capacidad, el sistema duplicar el
tamao del objeto Vector cada vez que se requiere una capacidad adicional.
f ) Puede utilizar un(a) no modificable wrapper para crear una coleccin que
ofrezca acceso de slo lectura a los dems, mientras que a usted le permita el
acceso de lectura/escritura.
g) Los objetos LinkedList se pueden utilizar para crear pilas, colas, rboles y
deques (colas con doble extremo).
h) El algoritmo disjoint de Collections determina si dos colecciones tienen
elementos en comn.

19.2 Conteste con verdadero o falso a cada una de las siguientes


proposiciones; en caso de ser falso, explique por qu.
a) Los valores de tipos primitivos pueden almacenarse directamente en un objeto
Vector.
Falso; un objeto Vector slo almacena objetos. La conversin autoboxing ocurre
cuando se agrega un tipo primitivo al objeto Vector, lo cual significa que el tipo
primitivo se convierte en su clase de envoltura de tipo correspondiente.
b) Un objeto Set puede contener valores duplicados.
Falso. Un objeto Set no puede contener valores duplicados.

c) Un objeto Map puede contener claves duplicadas.


Falso. Un objeto Map no puede contener claves duplicadas.
d) Un objeto LinkedList puede contener valores duplicados.
Verdadero.
e) Collections es una interfaz (interface).
Falso. Collections es una clase; Collection es una interfaz (interface).
f) Los objetos Iterator pueden eliminar elementos.
Verdadero.
g) Con la tcnica de hashing, a medida que se incrementa el factor de carga,
disminuye la probabilidad de colisiones.
Falso. Con la tcnica de hashing, a medida que aumenta el factor de carga, hay
menos posiciones disponibles, relativas al nmero total de posiciones, por lo que
la probabilidad de seleccionar una posicin ocupada (una colisin) con una
operacin de hashing se incrementa.
h) Un objeto PriorityQueue permite elementos null.
Falso. Una excepcin NullPointerException se lanza si el programa trata de
agregar null a un objeto PriorityQueue.