Publicado el 12 de Enero del 2019
706 visualizaciones desde el 12 de Enero del 2019
3,5 MB
40 paginas
Programación
Tema 9: Bibliotecas y Colecciones
Programación DIT-UPM
1
Contenidos
l Bibliotecas
l Concepto de colección
l Definición y uso de lista (List, ArrayList)
l Recorridos sobre colecciones
l Conjunto (Set, HashSet)
l Clases auxiliares-Arrays
Programación DIT-UPM
2
l Biblioteca (library): concepto genérico de
Bibliotecas
programación para referirse a un agrupamiento
y encapsulación de código que facilita la
reutilización de software.
l En java, las bibliotecas se denominan paquetes
(packages):
n Agrupan clases útiles relacionadas entre sí.
Programación DIT-UPM
3
Bibliotecas
l Las bibliotecas de java:
n Incorporan miles de clases y decenas de miles de
métodos
n Un programador Java competente debe ser capaz de
trabajar con las bibliotecas.
¡ Conocer algunas clases importantes por su nombre
¡ Saber cómo encontrar otras clases útiles cuando se
necesiten.
¡ Basta conocer la interfaz, no la implementación.
Programación DIT-UPM
4
Bibliotecas
l Biblioteca estándar de java
(API: Application Programmers’ Interface):
n Documentación en formato HTML
n Descripción de la interfaz (información pública) de las clases:
¡ nombre de la clase
¡ descripción general de la clase
¡
lista de constructores y métodos
¡ resultados y parámetros de constructores y métodos
¡ descripción del propósito de cada constructor y método
n No incluye información de implementación:
¡ campos/métodos privados
¡ cuerpos (código fuente) de cada método
Programación DIT-UPM
5
Bibliotecas
l Uso de las bibliotecas de clases:
n Deben ser importadas con una sentencia import
(excepto las clases de java.lang).
n Pueden ser usadas como clases del proyecto actual.
¡ Se pueden importar clases concretas:
import java.util.ArrayList;!
¡ Importar paquetes enteros:
import java.util.*;!
¡ Static import: permite referirse a atributos/métodos
definidos en una clase como public static sin
especificar la clase
Programación DIT-UPM
6
Bibliotecas
public class Circulos {!
public static void main(String[] args) {!
System.out.println(”Un círculo de 5 cm de radio, tiene:");!
System.out.println(”Long.Circunf.: " + (2 * Math.PI * 5) + " cm");!
System.out.println(”Área: “ +(Math.PI * Math.pow(5,2))+ ” cm2");!
}!
}!
!
import static java.lang.Math.*;!
import static java.lang.System.out;!
public class HelloWorld {!
public static void main(String[] args) {!
out.println(”Un círculo de 5 cm de radio, tiene:");!
out.println(”Long.Circunf.: " + (2 * PI * 5) + " cm");!
out.println(”Área: “ +(PI * pow(5,2))+ ” cm2");!
}!
}!
Programación DIT-UPM
7
Contenidos
l Bibliotecas
l Concepto de colección
l Definición y uso de lista (List, ArrayList)
l Recorridos sobre colecciones
l Conjunto (Set, HashSet)
l Clases auxiliares-Arrays
Programación DIT-UPM
8
Colecciones
l Los programas manejan gran cantidad de datos
l Los arrays permiten hacerlo, pero tienen
del mismo tipo
tamaños fijos
l Las colecciones son clases predefinidas que
permiten almacenar datos del mismo tipo
n El tamaño puede variar –no predeterminado
n Se pueden manejar estos datos de formas diferentes
(Lista, Conjunto, Mapa)
n Trabajan sólo con objetos
¡ Importante: Clases envoltorio para tipos primitivos
Programación DIT-UPM
9
Jerarquías de colecciones
Programación DIT-UPM
10
10
Colecciones genéricas
l Las clases e interfaces de colecciones son
genéricas: valen para cualquier tipo de objetos
l Pero hay que indicar el tipo concreto de
objetos: el tipo de objetos es un parámetro
especial (se marca entre ángulos)
n List<E>
n List<Punto> camino = null;
// Lista de elementos de tipo E
// lista de puntos
l El compilador se asegura de que en una
colección sólo se manejan objetos del tipo
indicado
Programación DIT-UPM
11
Colecciones más
importantes
l package java.util
n interface List<E>
n interface Set<E>
¡ class ArrayList<E> implements List<E>
¡ class HashSet<E> implements Set<E>
n interface Map<K, V>
¡ class HashMap<K,V> implements Map<K,V>
Programación DIT-UPM
12
Métodos de la interfaz
Collection<E>
l boolean add(E elemento)
l void clear()
l boolean contains(E elemento)
l boolean equals (Object x)
l boolean isEmpty()
l Iterator<E> iterator()
l boolean remove(E elemento)
l int size()
l Object[] toArray()
l …
Programación DIT-UPM
13
Contenidos
l Bibliotecas
l Concepto de colección
l Definición y uso de lista (List, ArrayList)
l Recorridos sobre colecciones
l Conjunto (Set, HashSet)
l Clases auxiliares-Arrays
Programación DIT-UPM
14
interface List<E>
l Lista de objetos de tipo E
n se respeta el orden en el que se insertan
n admite duplicados
n los datos están indexados
n el tamaño se adapta dinámicamente a lo que sea
necesario
n parecido a un array de tamaño dinámico
Programación DIT-UPM
15
interface List<E>
int indexOf(E elemento)
l boolean add(E elemento)
l void add(int posicion, E elemento)
l void clear()
l boolean contains(E elemento)
l boolean equals(Object x)
l E get(int posicion)
l
l boolean isEmpty()
l Iterator<E> iterator()
l E remove(int posicion)
l boolean remove(E elemento)
l E set(int posicion, E elemento)
l
l Object[] toArray()
int size()
[En rojo: pueden lanzar excepciones]
Programación DIT-UPM
16
16
Implementaciones de
List<E>
l ArrayList<E>
n array dinámico
n Usa poca memoria
n Recorridos rápidos, inserción y borrado lento
l LinkedList<E>
n lista encadenada
n Usa memoria extra
n Recorrido lineal rápido, otros lentos
n inserciones y eliminaciones internas rápidas
Programación DIT-UPM
17
class ArrayList<E>
implements List<E>
l Crear una lista de Strings
ArrayList<String> notes = new ArrayList<String>();
l Con upcasting
List<String> notes = new ArrayList<String>();
l Necesario especificar:
n el tipo de la colección: ArrayList
n el tipo de los objetos que contendrá: <String>
Programación DIT-UPM
18
Uso de la colección
public class Notebook {
private ArrayList<String> notes;
…
public Notebook () {
}
notes = new ArrayList<String>();
public void almacenaNota(String nota) {
notes.add(nota);
}
public int numeroDeNotas() {
return notes.size();
}
...
}
Creación de la lista
Añadiendo una nota nueva
Devuelve el número de notas
Programación DIT-UPM
19
Objetos de la colección
Programación DIT-UPM
20
Recuperación de objetos
Comprueba la
validez del índice
public void muestraNota(int numeroNota)
{
if(numeroNota < 0) {
// Esto no es un número de nota válido.
}
else if(numeroNota < numeroDeNotas ()) {
System.out.println(notes.get(numeroNota));
}
else {
// Esto no es un número de nota válido.
}
}
Recupera e imprime la nota
Programación DIT-UPM
21
Borrado de objetos
public void eliminaNota (int posicion) {
Comprueba la
validez del índice
// posicion incorrecta, no hace nada
if (posicion <0 ) {
} else if (posicion < numeroDeNotas() ) {
} else {
}
notes.remove(posicion);
// posicion incorrecta, no hace nada
}
Elimina el objeto por su índice
Programación DIT-UPM
22
remove: reasigna índices!
remove(índice)
Programación DIT-UPM
23
Ejemplos
List <Integer> lista= new ArrayList <Integer> () ;
lista.add(1);
lista.add(9);
lista.add(1, 5);
System.out.println(lista.size()); // 3
System.out.println(lista.get(0)); // 1
System.out.println(lista.get(1)); // 5
System.out.println(lista.get(2)); // 9
for (int n: lista)
System.out.print(n); // 1 5 9
Programación DIT-UPM
24
Listas - arrays
Listas
ArrayList<E> x;
Arrays
E[] x;
x = new ArrayList<E>()
x = new E[n]
x.add(valor)
x.size()
x.remove(n)
x.get(n)
x.set(n,v)
Tamaño variable
-
x.length
-
x[n]
x[n] = v
Tamaño fijo: n
Programación DIT-UPM
25
Contenidos
l Bibliotecas
l Concepto de colección
l Definición y uso de lista (List, ArrayList)
l Recorridos sobre colecciones
l Conjunto (Set, HashSet)
l Clases auxiliares-Arrays
Programación DIT-UPM
26
Bucle for-each
Forma general del bucle for-each
palabra clave for
cabecera bucle
for(TipoElemento elemento : colección) {
cuerpo bucle
}
Sentencia(s) que se repiten
l Para cada elemento de una colección de
objetos de TipoElemento,
haz las acciones del cuerpo del bucle
Programación DIT-UPM
27
Recorridos de colecciones
// Para recorrer cualquier colección
// for-each
public void listaNotas(){
for(String nota : notes) {
System.out.println(nota); }
}
// Para colecciones indexadas
public void listaNotasForNormal(){
for (int i = 0; i < notes.size(); i ++) {
System.out.println( notes.get(i) ); }
}
// Para colecciones indexadas también bucle while
public void listaNotasWhile() {
int i = 0;
while (i< notes.size()) {
System.out.println( notes.get(i) );
i++; }
}
Programación DIT-UPM
28
Contenidos
l Bibliotecas
l Concepto de colección
l Definición y uso de lista (List, ArrayList)
l Recorridos sobre colecciones
l Conjunto (Set, HashSet)
l Clases auxiliares-Arrays
Programación DIT-UPM
29
interface Set<E>
l No permite elementos repetidos (un elemento
pertenece o no al conjunto)
l No tienen orden
l El tamaño se adapta dinámicamente
Programación DIT-UPM
30
interface Set<E>
l boolean add(E elemento)
l void clear()
l boolean contains(E elemento)
l boolean equals(Object x)
l boolean isEmpty()
l Iterator<E> iterator()
l boole
Comentarios de: Tema 9: Bibliotecas y Colecciones (0)
No hay comentarios