Convertir una matriz de cadenas en una cadena en Java

Quiero el código de Java para convertir una matriz de cadenas en una cadena.

Si solo desea un volcado de “estilo de depuración” de una matriz:

 String str = Arrays.toString(arr); 

o, para obtener más control (antes de Java 8):

 StringBuilder builder = new StringBuilder(); for(String s : arr) { builder.append(s); } String str = builder.toString(); 

(Java 8 y superior):

 String str = String.join(",", arr); 

Puede modificar lo anterior dependiendo de los caracteres, si los hay, que desee entre cadenas.

Puede ver código casi idéntico al código pre Java 8 pero usando StringBufferStringBuilder es una clase más nueva que no es segura para subprocesos, pero tiene un mejor rendimiento en un solo subproceso porque elimina la sincronización innecesaria. En resumen, es mejor usar StringBuilder en el 99% de los casos; en cuanto a la funcionalidad, los dos son idénticos.

NO use una cuerda y añádala con + = como algunas de las respuestas que se muestran aquí. Esto envía al GC a través del techo porque estás creando y tirando tantos objetos de cuerda como elementos en tu matriz. Para las matrices pequeñas, es posible que no note la diferencia, pero para las grandes puede ser de un orden de magnitud más lento.

Utilice Apache commons StringUtils.join() . Toma una matriz, como parámetro (y también tiene sobrecargas para los parámetros Iterable e Iterator ) y llama toString() en cada elemento (si no es nulo) para obtener cada representación de cadena de elementos. Cada representación de cadena de elementos se une en una cadena con un separador en el medio si se especifica uno:

 String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-"); System.out.println(joinedString); 

Produce:

 ab-1 

Me gusta utilizar la herramienta Guava Joiner de Google para esto, por ejemplo:

 Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione"); 

produciría la misma cadena como:

 new String("Harry, Ron, Hermione"); 

ETA: Java 8 tiene soporte similar ahora:

 String.join(", ", "Harry", "Ron", "Hermione"); 

No se puede ver el soporte para omitir valores nulos, pero eso se soluciona fácilmente.

Podrías hacer esto, dado un array de tipo primitivo:

 StringBuffer result = new StringBuffer(); for (int i = 0; i < a.length; i++) { result.append( a[i] ); //result.append( optional separator ); } String mynewstring = result.toString(); 

De Java 8, la manera más simple que creo es:

  String[] array = { "cat", "mouse" }; String delimiter = ""; String result = String.join(delimiter, array); 

De esta manera puede elegir un delimitador arbitrario.

Prueba el método Arrays.deepToString .

Devuelve una representación de cadena de los “contenidos profundos” de la matriz especificada. Si la matriz contiene otras matrices como elementos, la representación de la cadena contiene sus contenidos, etc. Este método está diseñado para convertir matrices multidimensionales en cadenas

Prueba los métodos Arrays.toString sobrecargados.

O bien, pruebe esta implementación genérica a continuación:

 public static void main(String... args) throws Exception { String[] array = {"ABC", "XYZ", "PQR"}; System.out.println(new Test().join(array, ", ")); } public  String join(T[] array, String cement) { StringBuilder builder = new StringBuilder(); if(array == null || array.length == 0) { return null; } for (T t : array) { builder.append(t).append(cement); } builder.delete(builder.length() - cement.length(), builder.length()); return builder.toString(); } 

A continuación se muestra un ejemplo de conversión de Array a String.

     clase pública ArrayToString
     { 
public static void main (String [] args) { String [] strArray = new String [] {"Java", "PHP", ".NET", "PERL", "C", "COBOL"};

  String newString = Arrays.toString(strArray); newString = newString.substring(1, newString.length()-1); System.out.println("New New String: " + newString); } } 

Desea un código que produzca una cadena de arrayList,

 Iterate through all elements in list and add it to your String result 

puedes hacer esto de 2 formas: usando String como resultado o StringBuffer / StringBuilder.

Ejemplo:

 String result = ""; for (String s : list) { result += s; } 

… pero esta no es una buena práctica por razones de rendimiento. Mejor es usar StringBuffer (hilos seguros) o StringBuilder que son más apropiados para agregar Cuerdas

 String[] strings = new String[25000]; for (int i = 0; i < 25000; i++) strings[i] = '1234567'; String result; result = ""; for (String s : strings) result += s; //linear +: 5s result = ""; for (String s : strings) result = result.concat(s); //linear .concat: 2.5s result = String.join("", strings); //Java 8 .join: 3ms Public String join(String delimiter, String[] s) { int ls = s.length; switch (ls) { case 0: return ""; case 1: return s[0]; case 2: return s[0].concat(delimiter).concat(s[1]); default: int l1 = ls / 2; String[] s1 = Arrays.copyOfRange(s, 0, l1); String[] s2 = Arrays.copyOfRange(s, l1, ls); return join(delimiter, s1).concat(delimiter).concat(join(delimiter, s2)); } } result = join("", strings); // Divide&Conquer join: 7ms 

Si no tiene la elección, pero para usar Java 6 o 7, debe usar la combinación de Divide & Conquer.

 String array[]={"one","two"}; String s=""; for(int i=0;i 

Utilice el método de combinación de la biblioteca StringUtils de Apache Commons.

 String[] stringArray = {"a","b","c"}; StringUtils.join(stringArray, ","); 

Si sabe cuántos elementos tiene la matriz, una forma simple es hacer esto:

 String appendedString = "" + array[0] + "" + array[1] + "" + array[2] + "" + array[3];