serialización de objetos en JAVA

Que es la serialización?

Serializacion es el proceso de lectura o escritura de un objeto, Es un proceso de guardado del estado de un objeto en una secuencia de bytes, como también al proceso de reconstrucción de esos bytes en un nuevo objeto.

Un objeto es marcado serializable implementando  la interface java.io.Serializable, la cual solo sirve como marcador, este mismo permite el mecanismo de la serializacion indicando que la clase puede ser serializada.

Que son las variables Transient?

Transient nos indica a las variables que no pueden ser serializadas.

Los campos marcados como transient  en un objeto Serializable no serán persistidos en archivo.

Leer Más…

Anuncios

Objetos Mutables e Inmutables , String vs StringBuffer , StringBuilder

Cuales son los objetos Inmutables? Los objetos inmutables no cambian una ves que son instanciados, se convierten en objetos de solo lectura luego de la instanciación, los objetos inmutables son ideales para representar números ( como java.lang.Integer, java.lang.Float, java.lang.BigDecimal etc ) , enumerated types, colores (java.awt.Color) Y Cuales son los beneficios de los objetos Inmutables? […]

Entendiendo los mensajes de memoria de salida Logcat [android]

Si testeaste tu aplicación alguna ves , seguramente notaste que en el la salida LogCat por eclipse aparecen mensajes como los siguientes

GC_EXPLICIT freed 6K, 41% free 2667K/6151K, external 0K/0K, paused 21ms

GC_CONCURRENT freed 378K, 41% free 3373K/6151K, external 0K/0K, paused 12ms+11ms

GC_CONCURRENT freed 379K, 42% free 3856K/6335K, external 0K/0K, paused 4ms+2ms

GC_CONCURRENT freed 434K, 32% free 2091K/6727K, external 0K/0K, paused 1ms+13ms

GC_EXPLICIT freed 244K, 42% free 3498K/6535K, external 0K/0K, paused 12ms

freed Leer Más…

Java Map Collections

Colecciones Map

Las colecciones Map utilizan una asociación entre pares de objetos. Valido para los casos donde se necesitan asociar claves a objetos por ejemplo.

  • para un codigo abreviado de lenguaje ,  que lenguaje utilizo?
  • para un id de usuario , que detalle de usuario obtengo?
  • para un usuario en mi servidor web, que sesión activa obtengo?

Declarar un Map no varia mucho a las declaraciones utilizando List.

Map<Integer,String> diasSemana = new HashMap<Integer, String> (7);

HashMap es una clase que nos permite almacenar "clave/valor" de a pares.
["exequiel","1000.00"] = ["key","value"]

miMap.put("saludo", "Buenos días Sr Ming !)");

System.out.println("ejemplo: " + miMap.get("saludo"))


En este caso estamos implementando una asociación de clave entera con un String y junto con nuestra declaración dimensionamos la colección de 7 elementos.Existen diferentes implementaciones que podremos utilizar, cada uno se aplica a cada caso en particular, la siguiente imagen nos ayudara a elegir el correcto a la hora de utilizarlo.

HashMap

Leer Más…

Java Collections API – Set – Segunda Parte

La interfaz Set

La Interfaz Set es una subclase de la interfaz  java.utilCollection. Representa un set de objetos, donde estos objetos no se pueden repetir, no nos interesa el orden de estos elementos,

Por que usar Set?

Muchas veces usamos List para guardar una lista de elementos, después de todo , List dispone del método contains() que nos permite ver si algún elemento esta en la lista y nos basta para mantener la condición de si el elemento esta presente o no, y de esta forma agregar o no el elemento en cuestión, siendo así , cual es el punto de utilizar Set?

Bien la respuesta es simple eficiencia.

Si solo necesitamos el criterio de que este presente o no y no necesitamos alguna funcionalidad extra (como orden) entonces es posible utilizar una estructura mas eficiente, esto es lo que la implementaciónes Set nos ofrece.

La interfaz List dispone de 3 implementaciones generales de Set:

HashSet, TreeSet y LinkedHashSet.

HashSet, almacena sus elementos en una tabla Hash, no permite duplicados ni aplica orden alguno a sus elementos.

TreeSet, guardar sus elementos en un árbol, ordenando sus elementos en base a sus valores, y por lo tanto es más lento que un HashSet.

LinkHashSet, por otro lado es implementada por una tabla Hash con una lista enlazada a través de ella, ordenando sus elementos en base a como han sido insertados.
LinkedHashSet tiene un costo más alto de rendimiento que un HashSet.

Algunos de los métodos de la interfaz Set son los siguientes:

  • add(Object o): añade el objeto pasado por parámetro al Set siempre que éste no exista ya, y devuelve un booleano.
  • clear(): Elimina a todos los elementos del Set.
  • contains(Object o): devuelve true si el Set contiene el objeto pasado por parámetro. Para ello, se compara de forma interna con el método equals (o.equals(x);) o con el método hashCode().
  • isEmpty(): devuelve true si el Set está vacío.
  • iterator(): devuelve un iterador
  • remove(Object o): elimina el objeto pasado por parámetro si existe y devuelve un booleano.
  • size(): devuelve un entero que es el número de elementos del Set.

TIJ325

La interfaz SortedSet extiende de la interfaz Set y añade una serie de métodos, entre los que hay que destacar:

  • comparator(): obtiene el objeto pasado al constructor para establecer el orden; si se emplea el orden natural definido por la interface Comparable, devuelve null;
  • first() / last(): devuelve el primer o el último elemento del conjunto.

Descargar código de ejemplo  SortedSet TreeSet HashSet

Fuentes:

http://www.cs.hut.fi

http://vayajava.blogspot.com.ar

http://www.java2s.com

http://tutorial.saviasoft.com

Java Collections API – List LinkedList – Primera parte

Una coleccion o un contenedor (collection) es simplemente un objeto que agrupa múltiples elementos dentro de
una unidad. Las colecciones las utilizaremos para guardar, obtener y manejar datos.
Estas representan conjunto de items que forman un grupo natural de elementos, por ejemplo un maso de cartas ( seria una coleccion de cartas) o bien una casilla de correos ( un conjunto de cartas ) o por que no una agenda (un mapeo de nombres a números telefónicos por ejemplo)

En la figura de abajo vemos los diferentes tipos  de interfaces de colecciones que nos provee java y su jerarquía.

Tenga en cuenta que en el gráfico aparecen 2 tipos de jerarquías ya que un Map no es una verdadera colección.

( en una publicación posterior entrare en detalle con SortedMap y Map )

colls-coreInterfaces

Set Es una clase especial de colleccion SortedSet es otra clase especial de Set, y así en adelante.

Por ejemplo esta es una declaracion de la interface Collection

public interface Collection<E>…

Donde <E> nos dice que la interface es genérica. Collection es el tope de jerarquia. Algunas colecciones nos permiten duplicar elementos y otras no, algunas son ordenadas y otras desordenadas.

List / LinkedList

Un objeto list ,conocido como secuencia ,es un objeto Collection ordenado que puede contener elementos duplicados. Al igual que los indices de los arreglos, los indices de objetos List también empiezan desde cero.

List

La interfaz List es implementada por varias clases , incluyendo a ArrayList,LinkedList y Vector. La clase ArrayList es una implementacion de un objeto List como arreglo que puede modificar su tamaño. El comportamiento y las herramientas de la clase ArrayList son similares a las de la clase Vector.

Se encarga de definir métodos para trabajar con colacciones ordenadas y con elementos repetidos.

Algunos de los métodos de la interface List son los siguientes:

  • add(Object o): añade un objeto al final de la lista.
  • add(int indice, Object o): añade un objeto a la lista en la posición indicada.
  • get(int indice): devuelve el objeto de la lista de la posición indicada.
  • remove(int indice): elimina el objeto de la lista pasado por parámetro.
  • clear(): elimina todos los elementos de la lista.
  • indexOf(Object o): devuelve la posición de la primera vez que un elemento coincida con el objeto pasado por parámetro. Si el elemento no se encuentra devuelve -1.
  • lastIndexOf(Object o):devuelve la posición de la última vez que un elemento coincida con el objeto pasado por parámetro. Si el elemento no se encuentra devuelve -1.
  • size(): devuelve el número de elementos de la lista.
  • contains(Object o): devuelve verdadero si en la lista aparece el objeto pasado por parámetro, para lo cual utiliza intrínsecamente el método equals().

A continuación dejo un código que demuestra las posibilidades que nos otorgan estas dos colecciones (List y LinkedList)

descargar codigo ejemplo List y LinkedList

En sucesivas publicaciones avanzare con Set,Queue y Map.

Saludos!!

 

 

Fuente.

Java  Editorial Deitel (Quinta Edición)

http://docs.oracle.com/

http://vayajava.blogspot.com.ar

Check Exceptions Uncheck Exceptions

Check Exceptions Uncheck Exceptions
Hoy tuve la necesidad de reveer algunas cuestiones de java referidas a los tipos de excepciones existentes.
Bien en la imagen se representa un esquema de donde provienen los errores y las excepciones , que como se ve
ahí heredan de Throwable.
throwable

Ahora paso a aclarar que es cada uno.

Errores.
Los errores son extensiones de la clase error. Si se genera un error, normalmente indica una falla fatal y el programa deberá cerrarse. ( ej, falta de memoria, incapacidad a la hora de cargar una clase.. )

Uncheck Exceptions ( de tiempo de ejecución)
Como habíamos visto en la imagen estas heredan de RuntimeException, Todas estas excepciones de tiempo de ejecución estándar (IllegalArgumentException, NullPointerException, IllegalStateException).
Se puede decidir que hacer con una excepción no controlada (uncheck) las puede comprobar , manejar o incluso ignorar, pero si se produce una excepción y el programa no lo maneja, JVm termina el programa e imprime el nombre de la excepción y un rastro de pila.

Check Exceptions
Son subclase de Exception , estas se deben obtener y manejar en alguna part de la aplicación, el compilador aplica esta regla.
Si desea crear una excepción propia esta debe heredar de Exception.

He aquí un método que produce una check exception  , y otro método que se llama:

public class BadUrlException extends Exception {
public BadUrlException(String s) {
super(s);
}
}
public void storeDataFromUrl(String url){
try {
String data = readDataFromUrl(url);
} catch (BadUrlException e) {
e.printStackTrace();
}
}
public String readDataFromUrl(String url)     throws BadUrlException{
if(isUrlBad(url)){
throw new BadUrlException("Bad URL: " + url);
}
String data = null;
//read lots of data over HTTP and return
//it as a String instance.

return data;
}

Como se puede ver el readDataFromUrl () método lanza una BadUrlException. para eso se creo BadUrlException . BadUrlException es una excepción check, ya que se extiende java.lang.Exception.

Saludos!!

fuentes.

Oracle University

Jenkov.com