Sei sulla pagina 1di 1

Programación II Unidad 4

EJERCICIOS PARA REALIZAR EN CLASE.


Objetivo: Ejemplificar las listas de objetos.
Partiendo de la codificación de la clase DireccionWeb que permite almacenar una dirección web (url y
descripción) que se muestra a continuación:
public class DireccionWeb {
private String url,descripcion;
public DireccionWeb ( String url, String descripcion ){
if ( !esValida(url) ) throw new IllegalArgumentException(url+“ invalida”);
this.url = url.toLowerCase();
this.descripcion = descripcion;
}
public String getUrl (){ return url; }
public String getDescripcion (){ return descripcion; }
private boolean esValida (String url ) {
/* Comprueba si la url es válida –DEBEREMOS FIJAR EL CRITERIO-*/
Pattern patron = Pattern.compile(
"^(https?|ftp)://[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-%]+)+" +
" (/[\\w-]+)*(/[a-zA-Z0-9-%]+\\.[a-zA-Z]{3})?$",
Pattern.CASE_INSENSITIVE );
Matcher resultado = patron.matcher(url);
return resultado.matches();
}
}

Enunciado:
a) Codifique un programa que lea direcciones web por pantalla y las almacene en una lista
(ArrayList) hasta que se escriba una url vacía. A continuación deberá mostrar por pantalla en el
mismo orden todas las direcciones web leídas. Si la url leída no es válida (ver constructor)
mostrará un mensaje avisando al usuario y seguirá pidiendo más direcciones.
b) Modifique el programa anterior para que se muestren por pantalla en orden inverso las
direcciones leídas recorriendo la lista al revés.
c) Modifique el programa anterior para que si el usuario escribe alguna dirección web repetida no
se almacene en la lista, solo mostrará un aviso al usuario indicándole que ya está incluida y
seguirá pidiendo direcciones (utilice una lista en este apartado). Debe añadir los métodos
necesarios (equals) a la clase DireccionWeb de forma que el método contains de las
colecciones funcione correctamente para utilizarlo en la solución.
d) Modifique el apartado c) y utilice una implementación de conjunto no ordenado (Set) para
almacenar la información en lugar de la lista. Debe añadir los métodos necesarios (hashCode) a
la clase DireccionWeb de forma que el conjunto funcione correctamente.
Observe que en este caso las direcciones puede que se muestren en pantalla en un orden
distinto al de inserción. ¿Por qué aparecen en ese orden?¿Se podría solucionar este problema?
e) Modifique el apartado c) y utilice una implementación de Mapa en la solución, donde la clave sea
solamente la url (clase String) y el valor asociado el objeto completo con la dirección web (clase
DireccionWeb). Utilice containsKey para comprobar si la clave ya existe en la solución. ¿Cómo
se obtendría una dirección web dada su url (clave)?

Página 1

Potrebbero piacerti anche