El concepto de StringJoiner es uno de esos conceptos que muchas personas no conocen del API fundamental de Java y que nos permite manejar agrupaciones de cadenas de forma sencilla . Vamos a explicar este concepto partiendo de un Array de cadenas.
package com.arquitecturajava;
public class Principal1 {
public static void main(String[] args) {
String[] lista=new String[] {"hola","que","tal","estas"};
for( String texto:lista) {
System.out.println(texto);
}
}
}
Esta lista de cadenas esta construida con un Array de Java y simplemente tenemos que recorrerla con un bucle forEach para que nos imprima los datos en la consola .
Combinando Cadenas
En muchos casos necesitamos combinar cadenas y mostrarlas en una única linea separadas por algún tipo de caracter especial .
package com.arquitecturajava;
public class Principal2 {
public static void main(String[] args) {
String[] lista=new String[] {"hola","que","tal","estas"};
String textoTotal="";
for( String texto:lista) {
textoTotal+=texto+",";
}
System.out.println(textoTotal);
}
}
En este caso el resultado imprimirá las cadenas separadas por comas:
No es el resultado que nosotros deseamos al combinar un conjunto de cadenas ya que nos sobra la última coma así como nos gustaría tener delimitadores al principio y final de la cadena. Una solución más elaborada usando substring sería:
package com.arquitecturajava;
public class Principal3 {
public static void main(String[] args) {
String[] lista=new String[] {"hola","que","tal","estas"};
String textoTotal="";
textoTotal+="(";
for( String texto:lista) {
textoTotal+=texto+",";
}
textoTotal=textoTotal.substring(0,textoTotal.length()-1);
textoTotal+=")";
System.out.println(textoTotal);
}
}
public class Principal3 {
public static void main(String[] args) {
String[] lista=new String[] {"hola","que","tal","estas"};
String textoTotal="";
textoTotal+="(";
for( String texto:lista) {
textoTotal+=texto+",";
}
textoTotal=textoTotal.substring(0,textoTotal.length()-1);
textoTotal+=")";
System.out.println(textoTotal);
}
}
El resultado queda más elegante:
Java StringJoiner
El único problema que tenemos es que el código queda bastante enrevesado y no es sencillo de entender al echarle un vistazo. Es aquí donde la clase StringJoiner brilla y nos permite simplificar este código de un plumazo:
package com.arquitecturajava;
import java.util.StringJoiner;
public class Principal4 {
public static void main(String[] args) {
String[] lista = new String[] { "hola", "que", "tal", "estas" };
StringJoiner joiner = new StringJoiner(",", "(", ")");
for (String texto : lista) joiner.add(texto);
System.out.println(joiner.toString());
}
} Como se puede ver esta clase define el separador y los delimitadores de inicio y fin permitiendonos realizar la misma operación de una forma mucho mas elegante .
El resultado es idéntico: