¿Alternando una lista con comas?

Mientras desarrollaba un sistema (que lo llevo desarrollando hace 4 años y por falta de tiempo aún le falta bastante), me topé con la problemática de separar una lista de ids por comas. La idea era utilizarlo en un query de manera que quede algo como esto:

UPDATE employee SET active = 0 WHERE id in (1,2,3,4,5,6)

Inicialmente, como muchos hemos hecho, pensé en algo estrafalario como

for(int i = 0; i < names.size(); i++)
{
    if(no_es_ultimo)
    {
        System.out.println(names.get(i)+ ", ");
    }
    else
    {
        System.out.println(names.get(i));
    }
}

No necesariamente igual, pero espero dejarme entender.

El punto es que todo eso es bastante tedioso y….feo. Felizmente tenemos a Java 8 al rescate.

Si bien los id es de tipo Long, los necesitamos del tipo String, por lo que tendríamos

ArrayList companies = new ArrayList<>();
// agrega los ids a la lista...
// ...
Query q = getSession()
.createSQLQuery("UPDATE employee SET active = 0 WHERE id in( :company_ids)");
// aquí está la magia!
q.setParameter("company_ids", companies.stream().collect(joining(", ")));

Nota: para utilizar joining deberás importar

java.util.stream.Collectors.joining

Si bien Google nos regaló guava, creo que prefiero utilizar una funcionalidad que ya viene de caja.

Y tú, ¿Qué método prefieres?

Anuncios

Un comentario sobre “¿Alternando una lista con comas?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s