Logo Studenta

Colecciones-en-Java

¡Este material tiene más páginas!

Vista previa del material en texto

29/07/2010
1
Colecciones en Java
Curso: Tecnología de la Programación II.
Docente: Mg. Zoraida Vidal Melgarejo,.
1
ALMACENAMIENTO DE OBJETOS.
Java dispone de varias formas para almacenar objetos (o más
bien, referencias a objetos). La biblioteca java.util tiene un
conjunto razonablemente completo de clases contenedoras
que contienen estructuras de datos, interfaces y algoritmos
preempaquetados para manipular esas estructuras de datos.
Sus principales tipos básicos son: List, Set, Queue y Map
(lista, conjunto, cola y mapa respectivamente). Estos tipos de
objetos también se conocen con el nombre de clases de
colección o contenedores.
2
29/07/2010
2
ALMACENAMIENTO DE OBJETOS.
Los contenedores o colecciones proporcionan formas
sofisticadas de almacenar los objetos, incrementando de
manera significativa nuestra potencia de programación.
Con las colecciones, los programadores utilizan las estructuras
de datos existentes sin tener que preocuparse por la manera
en que éstas se implementan, constituyéndose en un claro
ejemplo de reutilización de código. Los programadores pueden
codificar más rápido y esperar un excelente rendimiento,
maximizando la velocidad de ejecución y minimizando el
consumo de memoria.
3
COLECCIONES.
Una colección es una estructura de datos (en realidad, un
objeto) que puede guardar referencias a otros objetos. Las
interfaces de las colecciones declaran las operaciones que un
programa puede realizar en cada tipo de colección.
Las implementaciones de las colecciones se crean
cuidadosamente para obtener una ejecución rápida y un uso
eficiente de la memoria; además fomentan la reutilización de
software al proporcionar una funcionalidad conveniente.
4
29/07/2010
3
LA CLASE ARRAYS.
La clase Arrays proporciona métodos estáticos para manipular
arreglos, como sort para ordenar un arreglo, binarySearch
para buscar en un arreglo ordenado, equals para comparar
arreglos y fill para colocar valores en un arreglo.
Estos métodos se sobrecargan para los arreglos de tipo
primitivo y los arreglos tipo Object.
5
LA INTERFAZ COLLECTION Y LA CLASE
COLLECTIONS.
La interfaz Collection es la interfaz raíz en la jerarquía de
colecciones, a partir de la cual se derivan las interfaces Set
(una colección que no contiene duplicados) y List.
La interfaz Collection contiene operaciones masivas, es decir
operaciones que se llevan a cabo en toda la colección, para
agregar, borrar, comparar y retener objetos (elementos) en la
colección. Un objeto Collection también puede convertirse en
un arreglo.
6
29/07/2010
4
LA INTERFAZ COLLECTION Y LA CLASE
COLLECTIONS.
La interfaz Collection proporciona un método que devuelve
un objeto Iterator, el cual permite recorrer la colección así
como eliminar elementos de dicha colección. Otros métodos
de la interfaz Collection permiten a un programa determinar
el tamaño de una colección, y si está vacía o no.
Collection se utiliza comúnmente con un tipo de parámetro
de métodos para permitir el procesamiento polimórfico de
todos los objetos que implementen a la interfaz Collection.
7
LA INTERFAZ COLLECTION Y LA CLASE
COLLECTIONS.
La mayoría de las implementaciones de colecciones
proporcionan un constructor que toma un argumento
Collection permitiendo así que un tipo de colección sea
tratado como otro tipo de colección.
La clase Collections proporciona métodos static que
manipulan las colecciones mediante el polimorfismo. Estos
métodos implementan algoritmos para buscar, ordenar, etc.
Otros métodos de Collections incluyen métodos de
envoltura que devuelven nuevas colecciones.
8
29/07/2010
5
OBJETOS LIST.
Un objeto List es un objeto Collection ordenado que puede
contener elementos duplicados. Al igual que los índices de
arreglos, los índices de objetos List empiezan desde cero (es
decir, el índice del primer elemento es cero).
Además de los métodos de interfaz heredados de Collection,
List proporciona métodos para manipular elementos a través
de sus índices, para manipular un rango especificado de
elementos, buscando elementos y para obtener un objeto
ListIterator para acceder a los elementos.
9
OBJETOS LIST.
La interfaz List es implementada por varias clases, incluyendo a
ArrayList, LinkedList y Vector.
La clase ArrayList es una implementación de un objeto List
como arreglo que puede modificar su tamaño dinámicamente.
El comportamiento y las herramientas de la clase ArrayList son
similares a las de la clase Vector. Un objeto LinkedList es una
implementación de un objeto List como lista enlazada.
10
29/07/2010
6
OBJETOS LIST.
Los objetos ArrayList se comportan igual que los objetos
Vector desincronizados, y por lo tanto se ejecutan con más
rapidez que los objetos Vector, ya que los objetos ArrayList no
tienen la sobrecarga que implica la sincronización de sus
procesos.
Los objetos LinkedList se pueden utilizar para crear pilas, colas,
árboles y colas con dos partes finales (conocidas en inglés
como “deque”).
11
OBJETOS LIST - USOS.
// Declarar e implementar un ArrayList
private ArrayList datos = new ArrayList();
// Agregar un elemento al ArrayList
datos.add(txtNombre.getText());
// Conocer el tamaño del ArrayList
if(datos.size() > 0) { … }
// Convertir un ArrayList en un arreglo
datos.toArray()
12
29/07/2010
7
OBJETOS LIST - USOS.
// Ordenar de forma ascendente el ArrayList
Collections.sort(datos);
// Buscar un elemento en el ArrayList
Collections.binarySearch(datos, datoBuscado);
// Invertir el orden de un ArrayList
Collections.reverse(datos);
13
OBJETOS LIST - USOS.
// Obtener el iterador del ArrayList
Iterator iterador = datos.iterator();
// Recorrer el ArrayList haciendo uso del iterador
while(iterador.hasNext()) { … }
// Obtener un elemento del ArrayList haciendo uso del iterador
iterador.next()
// Eliminar un elemento del ArrayList haciendo uso del iterador
iterador.remove();
14
29/07/2010
8
ALGORITMOS.
El marco de trabajo de colecciones proporciona varios
algoritmos de alto rendimiento para manipular elementos de
colecciones. Estos algoritmos se implementan como métodos
estáticos de la clase Collections. 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;
fill establece cada elemento de un objeto List para que haga
referencia a un objeto Object especificado; y copy copia las
referencias de un objeto List a otro.
15
ALGORITMOS: EL ALGORITMO SORT Y
SHUFFLE.
El algoritmo sort ordena los elementos de un objeto List. El
orden se determina en base al orden natural del tipo de los
elementos, según su implementación mediante el método
compareTo de ese objeto. El método compareTo está
declarado en la interfaz Comparable y algunas veces se le
conoce como el método de comparación natural.
La llamada a sort puede especificar un segundo argumento tipo
objeto Comparator, para determinar un ordenamiento alterno
de los elementos.
16
29/07/2010
9
El método reverseOrder de Collections devuelve un objeto
Comparator, el cual representa el orden inverso de la
colección. Para ordenar una vista List de un arreglo String, el
orden inverso es una comparación lexicográfica (el comparador
compara los valores Unicode que representan a cada
elemento) en orden descendente.
Es posible crear un objeto Comparator personalizado si se
define una clase que implemente a la interfaz Comparator.
El algoritmo shuffle ordena al azar los elementos de un objeto
List.
17
ALGORITMOS: EL ALGORITMO SORT Y
SHUFFLE.
ALGORITMOS: EL ALGORITMO REVERSE,
COPY,MAX YMIN.
La clase Collections proporciona algoritmos para invertir,
llenar y copiar objetos List.
El algoritmo reverse invierte el orden de los elementos en un
objeto List y el algoritmo fill sobreescribe los elementos en un
objeto List con un valor especificado. El algoritmo copy toma
dos argumentos: un objeto Listde destino y un objeto List de
origen. Cada elemento del objeto List de origen se copia al
objeto List de destino.
18
29/07/2010
10
ALGORITMOS: EL ALGORITMO REVERSE,
COPY,MAX YMIN.
El objeto List de destino debe tener cuando menos la misma
longitud que el objeto List de origen; de lo contrario, se
producirá una excepción IndexOutOfBoundsException. Si el
objeto List de destino es más largo, los elementos que no se
sobreescriban permanecerán sin cambio.
Los algoritmos max y min operan en cualquier objeto
Collection. El algoritmo min devuelve el elemento más
pequeño en un objeto Collection, y el algoritmo max
devuelve el elemento más grande en un objeto Collection.
19
ALGORITMOS: EL ALGORITMO BINARYSEARCH.
El algoritmo binarySearch se incluye en el marco de trabajo de
colecciones como un método estático de la clase Collections,
que implementa la búsqueda binaria y, localiza un objeto
Object en un objeto List. Si se encuentra el objeto Object se
devuelve el índice de ese objeto. Si no se encuentra el objeto
Object, binarySearch devuelve un valor negativo.
Antes de realizar búsquedas con el método de búsqueda
binaria, los elementos de la lista deben estar ordenados en
forma ascendente.
20
29/07/2010
11
CONJUNTOS.
Un objeto Set es un objeto Collection que contiene
elementos únicos, es decir sin elementos duplicados. El marco
de trabajo de colecciones contiene varias implementaciones de
Set, incluyendo a HashSet y TreeSet. HashSet almacena sus
elementos en una tabla de hash, y TreeSet almacena sus
elementos en un árbol.
El marco de trabajo de colecciones también incluye la interfaz
SortedSed (que extiende a Set) para los conjuntos que
mantengan a sus elementos ordenados, ya sea en el orden
natural o el especificado por un objeto Comparator.
21
CONJUNTOS.
La clase TreeSet implementa a SortedSet.
El método headSet de TreeSet permite obtener un
subconjunto del objeto TreeSet, en el que todos los elementos
serán menores que un valor especificado. El método tailSet de
TreeSet permite obtener un subconjunto en el que cada
elemento sea mayor o igual que un valor especificado.
Cualquier cambio en estos subconjuntos se reflejará en el
objeto TreeSet original.
22
29/07/2010
12
CONJUNTOS - USOS.
// Declarar e implementar un conjunto sin elementos repetidos
Set sinRepetidos = new HashSet(datos);
// Declarar e implementar un conjunto de elementos ordenados
SortedSet ordenado = new TreeSet(datos);
// Obtener un subconjunto de valores menores que un valor dado
ordenado.headSet(dato)
// Obtener un subconjunto de valores mayores o iguales que un valor dado
ordenado.tailSet(dato)
23
CONJUNTOS - USOS.
// Obtener el iterador del conjunto
Iterator iterador = ordenado.iterator();
// Recorrer el conjunto haciendo uso del iterador
while(iterador.hasNext()) { … }
// Obtener un elemento del conjunto haciendo uso del iterador
iterador.next()
24
29/07/2010
13
MAPAS.
Los objetos Map asocian claves a valores y no pueden
contener claves duplicados, es decir cada clave puede asociarse
solamente con un valor; a este tipo de asociación se le conoce
como asociación de uno a uno.
Los objetos Map difieren de los objetos Set en cuanto a que
los primeros contienen claves y valores, mientras que los
segundos contienen solamente valores. Dos de las muchas
clases que implementan a la interfaz Map son HashMap y
TreeMap.
25
MAPAS.
Los objetos HashMap almacenan elementos en tablas de hash,
y los objetos TreeMap almacenan elementos en árboles.
La interfaz SortedMap extiende a Map y mantiene sus claves
en orden; ya sea el orden natural o el orden especificado por
un objeto Comparator.
La clase TreeMap implementa a SortedMap. La clase
HashMap permite el uso de una clave null y de valores null.
26
29/07/2010
14
MAPAS - USOS.
// Declarar e implementar un mapa
private Map mapa = new HashMap();
// Agregar un elemento al mapa
mapa.put(clave, valor);
// Obtener un elemento del mapa
mapa.get(clave)
// Determinar si un elemento se encuentra en el mapa
mapa.containsKey(clave)
27
MAPAS - USOS.
// Obtener el iterador del mapa (se obtiene el conjunto de claves)
Iterator claves = mapa.keySet().iterator();
// Recorrer el mapa haciendo uso del iterador
while(claves.hasNext()) { … }
// Obtener un elemento del mapa haciendo uso del iterador
claves.next()
28

Continuar navegando