PDF de programación - 6. Colecciones (java-util) - Curso De Java

Imágen de pdf 6. Colecciones (java-util) - Curso De Java

6. Colecciones (java-util) - Curso De Javagráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 22 de Enero del 2018)
815 visualizaciones desde el 22 de Enero del 2018
420,7 KB
10 paginas
Creado hace 12a (13/04/2012)
Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6. Colecciones (java.util)



David Contreras Bárcena

124

6. Colecciones (java.util)

Java ofrece para el almacenamiento de objetos dos tipos de
estructuras:

Arrays

La estructura más sencilla para el almacenamiento de objetos.

Gestión de memoria estática.

Permite el almacenamiento de tipos básicos y objetos.

Sólo permite almacenar datos de un mismo tipo.

Clases contenedoras de objetos o Colecciones

Son estructuras complejas basadas en clases Java que realizan una gestión
interna del almacenamiento y recuperación de los elementos.

Gestión de memoria dinámica.

Permite el almacenamiento sólo de objetos.

David Contreras Bárcena

125

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.1 Arrays

La característica principal de un array es que una vez dimensionado
no se puede variar su tamaño.
La estructura se manipula directamente, por este motivo es la que
ofrece un mejor rendimiento en los accesos directos e iteraciones.
Definición de un array:

Se hace uso de los corchetes.
No se dimensiona.

tipoArray nombreArray[];

int temperaturas[];
Persona listado[];

Creación de un array:

Se emplea el operador new para realizar la reserva de memoria con la dimensión
dada.

nombreArray = new tipoArray[dimension];

temperaturas = new int[10];
listado = new Persona[20];

La definición y creación también se puede efectuar en la misma línea:

int temperaturas[] = new int[10];

Persona listado[] = new Persona[20];

David Contreras Bárcena

126

6.1 Arrays

La forma de direccionar un array es a través de un índice numérico.




Por defecto, un array se inicializa al valor por defecto del tipo (0) u objeto (null).
Agregar un elemento a una posición:

...

...

0

1

2

3

temperaturas[2] = 34;

listado[1] = new Persona(“Luis”, 17);

Extraer un elemento de una posición:

int a = temperaturas[2];
Persona p = listado[1];

Eliminar un elemento:

temperaturas[2] = 0; //puede llevar a equívoco

listado[1] = null; //con objetos, no

Recorrer la estructura:

Se utiliza el atributo length para obtener el número de posiciones del array, no para saber
el número de elementos de la estructura.

temperaturas.length  10

listado.length  20;

David Contreras Bárcena

127

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.1 Arrays

También se puede inicializar un array en el momento de su definición:

int temperaturas[] = {34, 36, 23, 40};

Un array es considerado como un tipo específico de objeto.

Cuando se intenta acceder a una posición que no existe se lanza la
excepción: java.lang.ArrayIndexOutOfBoundsException.

En memoria se comporta como un conjunto de referencias:





0

1

2

3

David Contreras Bárcena

128

6.1 Arrays - Ejemplo

int temperaturas[] = new int[6];

temperaturas[0] = 34;
temperaturas[1] = 24;
temperaturas[2] = 30;
temperaturas[3] = 29;

for(int i=0;i<temperaturas.length;i++)


0

1

System.out.println(temperaturas[i]);

2

3

...

...

Persona agenda[] = new Persona[4];

agenda[0] = new Persona("Juan", 323);
agenda[1] = new Persona("Miguel", 1211);
agenda[2] = new Persona("David", 11);
agenda[3] = new Persona("Ramón", 4444);

for (int i=0;i<agenda.length;i++)




System.out.println(agenda[i].getDni());

David Contreras Bárcena

129

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.2 Colecciones (java.util)

Las clases que permiten agrupar objetos se denominan
contenedores o colecciones de objetos.
Son estructuras más complejas que los arrays, ya que
además de poseer un interfaz para realizar todas las
operaciones básicas de agregación y extracción, poseen
otras más complejas (algoritmos), para realizar inserciones,
borrado y búsquedas de objetos.
Los tipos de objetos deberán ser encapsulados a través de
los wrappers.
Además de estas clases, Java proporciona un conjunto de
Interfaces que permiten trabajar de una forma abstracta con
estas estructuras omitiendo los detalles de sus
implementaciones.

Los Interfaces enfocados a realizar iteraciones, reciben el nombre
de Iterators.

David Contreras Bárcena

130

6.2 Colecciones (java.util)

Existen tres tipos genéricos de contenedores definidos por
sendos interfaces. Cada uno de ellos dispone de dos o tres
implementaciones.

Contenedores:


List

Set



Map


Colección de objetos con una secuencia determinada

Colección de objetos donde no se admiten duplicados
de objetos

Almacena parejas de objetos (clave-valor)

Los List y Set generalizan su comportamiento en otro
Interface llamado Collection. Cuando se haga referencia en
esta documentación a colecciones, se referirá al conjunto
total de clases contenedoras de objetos.

David Contreras Bárcena

131

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.2 Colecciones (java.util)

Iterator

devuelve

Collection

devuelve

Map

ListIterator

devuelve

List

Set

AbstractCollection

Hashtable

AbstractMap

AbstractList

AbstractSet

Vector

ArrayList

Abstract

SequentialList

TreeSet

HashSet

Stack

LinkedList

Ver 1.0

LinkedHashSet

David Contreras Bárcena

HashMap

TreeMap

LinkedHashMap

Enumeration

Collections

Arrays

132

6.3 Interface Collection (java.util) 1.2

El interfaz de Collection permite básicamente añadir, eliminar
y recorrer la estructura gracias a un Iterator.

El interfaz de List refina el comportamiento de Collection
permitiendo también, extraer, buscar y reemplazar
ocurrencias. Además ofrece la posibilidad de recorrer la
estructura con un ListIterator.

El interfaz de Set no amplia el comportamiento de Collection.

Collection

List

Set

David Contreras Bárcena

133

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.4 Interface List (java.util) 1.2

La característica más importante de una List es el orden de
almacenamiento, asegurando que los elementos siempre se
mantendrán en una secuencia determinada.

El List añade un conjunto de métodos a Collection que
permiten la inserción y borrado de elementos en mitad de la
lista.

ListIterator

List

devuelve

Permite generar un ListIterator para
moverse a través de las lista en ambas
direcciones.

Sublcases:

ArrayList y LinkedList.

Vector

AbstractList

ArrayList

Abstract

SequentialList

Ver 1.0

David Contreras Bárcena

134

Stack

LinkedList

6.4 Interface List (java.util) 1.2

Clase ArrayList

Lista volcada en un array.
Se debe utilizar en lugar de Vector como almacenamiento de objetos de
propósito general.
Permite un acceso aleatorio muy rápido a los elementos, pero realiza con
bastante lentitud las operaciones de insertado y borrado de elementos en medio
de la Lista.
Se puede utilizar un ListIterator para moverse hacia atrás y hacia delante en la
Lista, pero no para insertar y eliminar elementos. Para ello LinkedList.
Otras características: No sincronizada y fail-fast.

Clase LinkedList

Proporciona un óptimo acceso secuencial, permitiendo inserciones y borrado de
elementos de en medio de la Lista muy rápidas.
Por el contrario, es bastante lento el acceso aleatorio, en comparación con la
ArrayList.
También dispone de los métodos addLast(), getFirst(), getLast(), removeFirst() y
removeLast(), que no están definidos en ningún interfaz o clase base y que
permiten utilizar la Lista Enlazada como una pila, una cola o una cola doble.

David Contreras Bárcena

135

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.4 Interface List (java.util) 1.2

Comparación de rendimiento:

ArrayList

-SI: Acceso directo (3070)

- NO: Iteración (12200), inserción (500) y borrado
(46850)

LinkedList

- SI: Iteración (9110), inserción (110) y borrado (60).

- NO: Acceso directo(16320)

array

- Acceso directo (1430) y Iteración (3850)

David Contreras Bárcena

136

6.5 Interface Set (java.util) 1.2

No se admiten objetos duplicados, por lo que cada elemento
que se añada a un Set debe ser único.

Los elementos incorporados al conjunto deben tener
redefinido el método public boolean equals(Object).
Mecanismo para evitar duplicados.

Set

Set tiene el mismo interfaz que Collection,
y no garantiza el orden en que se encuentren
almacenados los objetos que contenga.

AbstractSet

Sublcases:

HashSet, TreeSet y LinkedHashSet.

HashSet

TreeSet

LinkedHashSet

David Contreras Bárcena

137

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA –ITL/IINF/ITIG

Lenguaje JAVA



6.5 Interface Set (java.util)

Clase HashSet 1.2

Solución habitual de Sets.

Emplea una tabla hash internamente, por ese motivo los objetos almacenados
deben implementar el método hasCode() –ver Interface Map-.

Cuando el tiempo de búsqueda sea crítico.

No se respeta el orden de inserción.

Clase LinkedHashSet 1.4

Lista doblemente enlazada donde se garantiza el orden de inserción.

Clase TreeSet 1.2

Es un Set ordenado, almacenado según un árbol balanceado.

Forma sencilla de extraer una secuencia ordenada.

Los objetos a almacenar deben implementar el Interface Comparable.



David Contreras Bárcena

138

6.5 Interface Map (java.util) 1.2

Los Mapas almacenan parejas de valores, relacionando un
objeto (clave) con otro objeto (valor).

Las claves no pueden estar duplicadas y sólo puede tener
una valor asociado.

Los valores pueden estar duplicados.

Map

Se pueden extraer las claves (Set), los valores
(Collection) o la entrada conjunta de ambos (Set).

AbstractMap

Implementaciones:

HashMap, TreeMap y LinkedHashMap.

HashMap

TreeMap

LinkedHashMap

David Contreras Bárcena

13
  • Links de descarga
http://lwp-l.com/pdf8417

Comentarios de: 6. Colecciones (java-util) - Curso De Java (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad