Social

viernes, 7 de noviembre de 2014

Java: Convertir un arreglo o array a una lista.

En algunos casos puede ser mas conveniente tener nuestros objetos dentro de una lista (List<Object>) que dentro de un arreglo (Object[]). En tal caso puede se puede realizar la conversión de arreglo a lista muy fácilmente.

En el siguiente ejemplo se puede observar como se define un arreglo de Integer (Integer[]) y luego se convierte en una lista de Integer (List<Integer>). Luego esta un ejemplo de como definir una lista de String (List<String>) directamente utilizando el métodos Arrays.asList().

import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args){
//Se crea un array de Integers
Integer[] numeros = new Integer[5];
numeros[0] = 0;
numeros[1] = 1;
numeros[2] = 2;
numeros[3] = 3;
numeros[4] = 4;
//Se pasa el array de Integer a una lista
List<Integer> listNumeros = Arrays.asList(numeros);
//Recorremos la lista
System.out.println("---recorriendo Lista de numeros---");
for(Integer numero : listNumeros){
System.out.println(numero);
}
//Otra forma de definir un array
//String[] strings = {"Elemento1","Elemento2","Elemento3"};
//Se puede definir la lista directamente desde el metodo asList
List<String> listString = Arrays.asList("Elemento1","Elemento2","Elemento3");
System.out.println("---Recorriendo lista de strings---");
for(String string : listString){
System.out.println(string);
}
}
}
Luego de ejecutar el código el resultado sería el siguiente.

---recorriendo Lista de numeros---
0
1
2
3
4
---Recorriendo lista de strings---
Elemento1
Elemento2
Elemento3

martes, 4 de noviembre de 2014

Java: Convertir String a Date

Para convertir un objeto del tipo String a Date debemos definir primero el formato en que usa el String a convertir. Para tal caso existe la clase DateFormat que tiene varias implementaciones pero en este caso la veremos con SimpleDateFormat. Estas clases nos permiten convertir un objeto String a Date usando un formato o sintaxis que se adecua a el String que enviamos.

El siguiente ejemplo muestra varios String los cuales deseamos pasar a fecha:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDate {
public static void main(String[] args){
//Diferentes fechas a parsear
String stringFechaHora = "2014-10-20 20:10:59";
String stringFecha = "20/10/2014";
String stringHora = "10:20:59";
try {
//Se necesita definir un formato para poder cambiar el String a Date
//En este caso buscará en el String año-mes-dia hora:minutos:segundos
DateFormat fechaHora = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date convertido = fechaHora.parse(stringFechaHora);
System.out.println(convertido);
//En este caso buscará en el String dia/mes/año
DateFormat fecha = new SimpleDateFormat("dd/MM/yyyy");
convertido = fecha.parse(stringFecha);
System.out.println(convertido);
//En este caso buscará en el String hora:minutos:segundos
DateFormat hora = new SimpleDateFormat("HH:mm:ss");
convertido = hora.parse(stringHora);
System.out.println(convertido);
//En este caso buscara hora:minutos:segundos en el String "20/10/2014"
//No lo encntrará y será error por lo que nos mandará al catch.
convertido = hora.parse(stringFecha);
System.out.println(convertido);
} catch (ParseException e) {
System.out.println("Error: " + e.getMessage());
}
}
}

El código anterior nos permite parsear el String buscando por los elementos que se definio en el formato. El resultado del código anterior es el siguiente:
Mon Oct 20 20:10:59 CST 2014
Mon Oct 20 00:00:00 CST 2014
Thu Jan 01 10:20:59 CST 1970
Error: Unparseable date: "20/10/2014"

En la siguiente imagen se pueden observar algunos ejemplos de SimpleDateFormat con sus resultados en String.