Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Colecciones de Java
y excepciones
Collection
Representa un grupo de objetos. Sin implementaciones
directas, agrupa la funcionalidad general que todas las
colecciones ofrecen.
Set
Colección que no puede tener objetos duplicados.
SortedSet
Set que mantiene los elementos ordenados.
List
Colección ordenada que puede tener objetos duplicados.
Map
Colección que mapea claves y valores; no puede tener claves
duplicadas y cada clave debe tener al menos un valor.
SortedMap
Map que mantiene las claves ordenadas.
Tablas hash:
HashSet: implementa la interfaz Set.
HashMap: implementa la interfaz Map.
Arrays de tamaño variable:
Vector: implementa la interfaz List.
Stack: implementa la interfaz List.
ArrayList: implementa la interfaz List.
Árboles equilibrados:
TreeSet: implementa la interfaz Set.
TreeMap: implementa la interfaz Map.
Listas enlazadas:
LinkedList: implementa la interfaz List.
. . .
import java.util.Vector;
posicion = v.lastIndexOf(p);
System.out.println("El siguiente objeto:");
System.out.print(p);
System.out.println("... se encuentra en la posición "
+ posicion + " del vector.");
p = new Persona(7654321, 28, "Ana", "Martos Hevia");
posicion = v.indexOf(p);
System.out.println("El siguiente objeto:");
System.out.print(p);
System.out.println("... se encuentra en la posición "
+ posicion + " del vector.");
v.add(p);
Vector otro = (Vector) v.clone();
muestra(otro);
v.clear();
muestra(v);
otro.remove(2);
muestra(otro);
otro.set(0, p);
muestra(otro);
System.out.println(otro); toString()
}
. . .
posicion = lista.lastIndexOf(p);
System.out.println("El siguiente objeto:");
System.out.print(p);
System.out.println("... se encuentra en la posicion "
+ posicion + " de la lista.");
p = new Persona(7654321, 28, "Ana", "Martos Hevia");
posicion = lista.indexOf(p);
System.out.println("El siguiente objeto:");
System.out.print(p);
System.out.println("... se encuentra en la posicion "
+ posicion + " de la lista.");
lista.add(p);
ArrayList otra = (ArrayList) lista.clone();
muestra(otra);
lista.clear();
muestra(lista);
otra.remove(2);
muestra(otra);
otra.set(0, p);
muestra(otra);
System.out.println(otra);
}
. . .
// Cuenta.java
void imprimeCuenta() {
System.out.println(numero + " " + nombre + " " + saldo);
}
}
// Banco.java
import java.util.ArrayList;
public Banco() {
listaCuentas = new ArrayList();
}
import java.util.*;
public class PruebaColecciones{
public static void prueba(Collection c) {
String[] lista = {"uno", "dos" , "tres", "cuatro", "tres"};
for(int i = 0; i < lista.length; i++ )
c.add( lista[i] );
Iterator it = c.iterator(); Mismo código de iteración
while(it.hasNext())
System.out.println( it.next() );
System.out.println( "-------------------------");
}
public static void main(String args[]) {
Collection c;
c = new ArrayList(); prueba(c);
c = new LinkedList(); prueba(c);
c = new HashSet(); prueba(c);
c = new TreeSet(); prueba(c);
}
} Las cuatro veces
Throwable
Error Exception
RuntimeException IOException
Throwable
Superclase que engloba a todas las excepciones
Error
Representa los errores graves causados por el sistema (JVM, ...);
no son tratados por los programas.
Exception
Define las excepciones que los programas deberían tratar
(IOException, ArithmeticException, etcétera).
try {
// Código que puede hacer que se eleve la excepción
}
catch(TipoExcepcion e) {
// Gestor de la excepción
}
try
El bloque de código donde se prevé que se eleve una excepción. Al
encerrar el código en un bloque try es como si dijéramos: "Prueba a
usar estas instrucciones y mira a ver si se produce
alguna excepción". El bloque try tiene que ir seguido, al menos, por
una cláusula catch o una cláusula finally.
catch
El código que se ejecuta cuando se eleva la excepción. Controla
cualquier excepción que cuadre con su argumento. Se pueden
colocar varios catch sucesivos, cada uno controlando un tipo
de excepción diferente.
finally
Bloque que se ejecuta siempre, haya o no excepción. Existe cierta
controversia sobre su utilidad, pero podría servir, por ejemplo, para
hacer un seguimiento de lo que está pasando,
ya que al ejecutarse siempre puede dejar grabado un registro (log)
de las excepciones ocurridas y su recuperación o no.
a = 0
java.lang.ArithmeticException: / by zero
at Excepcion1.main(Excepcion1.java:6)
Exception in thread "main" Process Exit...
a = 0
No dividas por 0 (java.lang.ArithmeticException: / by zero)
La ejecución sigue ...
class Cuenta {
private int saldo;
public Cuenta() { saldo = 0; }
public Cuenta(int n) { saldo = n; }
public void meterDinero(int n) { saldo += n; }
public void sacarDinero(int n) throws NoHayDineroException {
if(saldo > n) saldo -= n;
else throw new NoHayDineroException(n - saldo);
}
}
class Test {
public static void main(String a[]) {
Cuenta c = new Cuenta(5000);
try {
c.sacarDinero(60000);
}
catch(NoHayDineroException e) {
System.out.println("Te has pasado en " + e.getDinero());
}
}
}