PDF de programación - Sesión 2: Colecciones de datos - Lenguaje Java Avanzado

Imágen de pdf Sesión 2: Colecciones de datos - Lenguaje Java Avanzado

Sesión 2: Colecciones de datos - Lenguaje Java Avanzadográfica de visualizaciones

Publicado el 22 de Enero del 2019
503 visualizaciones desde el 22 de Enero del 2019
154,3 KB
31 paginas
Creado hace 11a (26/09/2012)
Experto Universitario Java Enterprise

Lenguaje Java Avanzado

Sesión 2: Colecciones de datos

© 2012-2013 Depto. Ciencia de la Computación e IA



Experto Universitario Java Enterprise

Índice

• Introducción
• Colecciones
• Enumeraciones e iteradores
• Polimorfismo e interfaces
• Wrappers de tipos básicos

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 2



Experto Universitario Java Enterprise

Introducción

• Java proporciona un amplio conjunto de clases útiles para desarrollar

aplicaciones

• En esta sesión veremos algunos grupos de ellas:

• Clases útiles para crear y gestionar diferentes tipos de colecciones
• Clases para recorrer, ordenar y manipular las colecciones
• Clases para encapsular nuestros tipos de datos

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 3



Experto Universitario Java Enterprise

Colecciones
• En el paquete java.util
• Representan grupos de objetos, llamados elementos
• Podemos encontrar de distintos tipos, según si sus elementos están ordenados, si

permiten repetir elementos, etc

• La interfaz Collection define el esqueleto que deben tener todos los tipos de

colecciones

• Por tanto, todos tendrán métodos generales como:

• boolean add(Object o)
• boolean remove(Object o)
• boolean contains(Object o)
• void clear()
• boolean isEmpty()
• Iterator iterator()
• int size()
• Object[] toArray()

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 4



Experto Universitario Java Enterprise

Listas de elementos

• La interfaz List hereda de Collection
• Operaciones propias de una colección tipo lista
• Los elementos tienen un orden (posición en la lista)

• Así, tendremos otros nuevos métodos, además de los de Collection:

• void add(int posicion, Object o)
• Object get(int indice)
• int indexOf(Object o)
• Object remove(int indice)
• Object set(int indice, Object o)

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 5



Experto Universitario Java Enterprise

Tipos de listas
• ArrayList: implementa una lista de elementos mediante un array de tamaño variable

• NO sincronizado

• Vector: existe desde las primeras versiones de Java, después se acomodó al marco de colecciones

implementando la interfaz List.
• Similar a ArrayList, pero SINCRONIZADO. Tiene métodos anteriores a la interfaz List:

• void addElement(Object o) / boolean removeElement(Object o)
• void insertElementAt(Object o, int posicion)
• void removeElementAt(Object o, int posicion)
• Object elementAt(int posicion)
• void setElementAt(Object o, int posicion)
• int size()

• LinkedList: lista doblemente enlazada. Útil para simular pilas o colas

• void addFirst(Object o) / void addLast(Object o)
• Object getFirst() / Object getLast()
• Object removeFirst() / Object removeLast()

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 6



Experto Universitario Java Enterprise

Conjuntos
• Grupos de elementos donde no hay repetidos
• Consideramos dos objetos de una clase iguales si su método equals

los da como iguales
• o1.equals(o2) es true

• Los conjuntos se definen en la interfaz Set, que, como List, también

hereda de Collection

• El método add definido en Collection devolvía un booleano, que
en este caso permitirá saber si se insertó el elemento en el conjunto, o
no (porque ya existía)

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 7



Experto Universitario Java Enterprise

Tipos de conjuntos

• HashSet: los objetos del conjunto se almacenan en una tabla hash.
• El coste de inserción, borrado y modificación suele ser constante
• La iteración es más costosa, y el orden puede diferir del orden de inserción

• LinkedHashSet: como la anterior, pero la tabla hash tiene los elementos

enlazados, lo que facilita la iteración

• TreeSet: guarda los elementos en un árbol

• El coste de las operaciones es logarítmico

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 8



Experto Universitario Java Enterprise

Mapas

• No forman parte del marco de colecciones
• Se definen en la interfaz Map, y sirven para relacionar un conjunto de

claves (keys) con sus respectivos valores

• Tanto la clave como el valor pueden ser cualquier objeto

• Object get(Object clave)
• Object put(Object clave, Object valor)
• Object remove(Object clave)
• Set keySet()
• int size()

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 9



Experto Universitario Java Enterprise

Tipos de mapas

• HashMap: Utiliza una tabla hash para almacenar los pares clave=valor.

• Las operaciones básicas (get y put) se harán en tiempo constante si la dispersión es adecuada
• La iteración es más costosa, y el orden puede diferir del orden de inserción

• Hashtable: como la anterior, pero SINCRONIZADA. Como Vector, está desde las

primeras versiones de Java
• Enumeration keys()

• TreeMap: utiliza un árbol para implementar el mapa

• El coste de las operaciones es logarítmico
• Los elementos están ordenados ascendentemente por clave

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 10



Experto Universitario Java Enterprise

Genéricos

• Colecciones de tipos concretos de datos

• A partir de JDK 1.5
• Aseguran que se utiliza el tipo de datos correcto

ArrayList<String> a = new ArrayList<String>();
a.add("Hola");
String s = a.get(0);

• Podemos utilizar genéricos en nuestras propias clases

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 11



Experto Universitario Java Enterprise

Enumeraciones e iteradores

• Las enumeraciones y los iteradores no son tipos de datos en sí, sino objetos

útiles a la hora de recorrer diferentes tipos de colecciones

• Con las enumeraciones podremos recorrer secuencialmente los elementos

de una colección, para sacar sus valores, modificarlos, etc

• Con los iteradores podremos, además de lo anterior, eliminar elementos de

una colección, con los métodos que proporciona para ello.

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 12



Experto Universitario Java Enterprise

Enumeraciones

• La interfaz Enumeration permite consultar secuencialmente los elementos de

una colección

• Para recorrer secuencialmente los elementos de la colección utilizaremos su

método nextElement:

Object item = enum.nextElement();

• Para comprobar si quedan más elementos que recorrer, utilizamos el método

hasMoreElements:

if (enum.hasMoreElements()) ...

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 13



Experto Universitario Java Enterprise

Enumeraciones

• Con lo anterior, un bucle completo típico para recorrer una colección

utilizando su enumeración de elementos sería:

// Obtener la enumeracion
Enumeration enum = coleccion.elements();
while (enum.hasMoreElements())
{

Object item = enum.nextElement();
...// Convertir item al objeto adecuado y
// hacer con el lo que convenga

}

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 14



Experto Universitario Java Enterprise

Iteradores
• La interfaz Iterator permite iterar secuencialmente sobre los elementos de una

colección

• Para recorrer secuencialmente los elementos de la colección utilizaremos su

método next:

Object item = iter.next();

• Para comprobar si quedan más elementos que recorrer, utilizamos el método

hasNext:

if (iter.hasNext()) …

• Para eliminar el elemento de la posición actual del iterador, utilizamos su método

remove:

iter.remove();

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 15



Experto Universitario Java Enterprise

Iteradores

• Con lo anterior, un bucle completo típico para recorrer una colección utilizando su

iterador sería:

// Obtener el iterador
Iterator iter = coleccion.iterator();
while (iter.hasNext())
{

Object item = iter.next();
...// Convertir item al objeto adecuado y
// hacer con el lo que convenga, por ejemplo
iter.remove();

}

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 16



Experto Universitario Java Enterprise

Bucles sin iteradores

• Nueva versión del for en JDK 1.5
• Permite recorrer tanto arrays como colecciones
• Previene salirse del rango de forma segura

List<String> lista = obtenerLista();
for(String cadena: lista)

System.out.println (cadena);

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 17



Experto Universitario Java Enterprise

Polimorfismo e interfaces

• Hacer referencia siempre mediante la interfaz

• Permite cambiar la implementación sin afectar al resto del programa

public class Cliente {
List<Cuenta> cuentas;
public Cliente() {
this.cuentas = new ArrayList<Cuenta>();
}
public List<Cuenta> getCuentas() {
return cuentas;
}
}

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 18



Experto Universitario Java Enterprise

Ejemplo: Algoritmos

• La clase Collections dispone de una serie de métodos útiles para

operaciones tediosas, como ordenar una colección, hacer una búsqueda
binaria, sacar su valor máximo, etc

• static void sort(List lista)
• static int binarySearch(List lista, Object objeto)
• static Object max(Collection col)
• ...

• Sirven para cualquier implementación de List

Lenguaje Java Avanzado

© 2012-2013 Depto. Ciencia de la Computación e IA

Colecciones - 19



Experto Universitario Java Enterprise

Comparación de objetos


Los objetos deben ser correctamente comparables para ser compatibles
con las estructuras de datos y algoritmos.

• Comparación de igualdad: equals( )
• Comparación de mayor o menor:
  • Links de descarga
http://lwp-l.com/pdf14950

Comentarios de: Sesión 2: Colecciones de datos - Lenguaje Java Avanzado (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