Imprima elementos de una matriz con una coma entre elementos, excepto la última palabra

Estoy imprimiendo elementos de una lista de matriz, quiero tener una coma entre cada palabra, excepto la última palabra. En este momento estoy haciendo esto:

for (String s : arrayListWords) { System.out.print(s + ", "); } 

Como usted comprenderá, imprimirá las palabras de esta manera: “uno, dos, tres, cuatro”, y el problema es la última coma, ¿cómo puedo resolver esto? Todas las respuestas apreciadas!

Saludos cordiales, Erica

Imprima la primera palabra por sí mismo si existe. Luego imprima el patrón como una coma primero, luego el siguiente elemento.

 if (arrayListWords.length >= 1) { System.out.print(arrayListWords[0]); } // note that i starts at 1, since we already printed the element at index 0 for (int i = 1; i < arrayListWords.length, i++) { System.out.print(", " + arrayListWords[i]); } 

Con una List , es mejor usar un Iterator

 // assume String Iterator it = arrayListWords.iterator(); if (it.hasNext()) { System.out.print(it.next()); } while (it.hasNext()) { System.out.print(", " + it.next()); } 

Lo escribiría de esta manera:

 String separator = ""; // separator here is your "," for (String s : arrayListWords) { System.out.print(separator + s); separator = ","; } 

Si arrayListWords tiene dos palabras, debe imprimir A, B

Usando Java 8 Streams:

 Stream.of(arrayListWords).collect(Collectors.joining(", ")); 

Al iterar, puede agregar String s a StringBuilder y, al final, puede eliminar los últimos 2 caracteres, que es un extra , y un espacio ( res.length() -2 )

 StringBuilder res = new StringBuilder(); for (String s : arrayListWords) { res.append(s).append(", "); } System.out.println(res.deleteCharAt(res.length()-2).toString()); 

Puede usar una función estándar en el paquete java.util y eliminar las comillas de bloque al inicio y al final.

 String str = java.util.Arrays.toString(arrayListWords); str = str.substring(1,str.length()-1); System.out.println(str); 
 StringJoiner str = new StringJoiner(", "); str.add("Aplha").add("Beta").add("Gamma"); String result = str.toString(); System.out.println("The result is: " + result); 

La salida: El resultado es: Aplha, Beta, Gamma

Puede usar un Iterator en la List para verificar si hay más elementos.

A continuación, puede agregar la coma solo si el elemento actual no es el último elemento.

 public static void main(String[] args) throws Exception { final List words = Arrays.asList(new String[]{"one", "two", "three", "four"}); final Iterator wordIter = words.iterator(); final StringBuilder out = new StringBuilder(); while (wordIter.hasNext()) { out.append(wordIter.next()); if (wordIter.hasNext()) { out.append(","); } } System.out.println(out.toString()); } 

Sin embargo, es mucho más fácil usar una biblioteca de terceros como Guava para hacer esto por usted. El código luego se convierte en:

 public static void main(String[] args) throws Exception { final List words = Arrays.asList(new String[]{"one", "two", "three", "four"}); System.out.println(Joiner.on(",").join(words)); } 

Puedes intentar esto

  List listWords= Arrays.asList(arrayListWords); // convert array to List StringBuilder sb=new StringBuilder(); sb.append(listWords); System.out.println(sb.toString().replaceAll("\\[|\\]","")); 

Esto es lo que se me ocurrió:

 String join = ""; // solution 1 List strList = Arrays.asList(new String[] {"1", "2", "3"}); for(String s: strList) { int idx = strList.indexOf(s); join += (idx == strList.size()-1) ? s : s + ","; } System.out.println(join); // solution 2 join = ""; for(String s: strList) { join += s + ","; } join = join.substring(0, join.length()-1); System.out.println(join); // solution 3 join = ""; int count = 0; for(String s: strList) { join += (count == strlist.size()-1) ? s: s + ","; count++; } System.out.println(join); 

Por supuesto, podemos usar StringBuilder pero, de todas las soluciones, me gusta la respuesta @Mav ya que es más eficiente y limpia.

Con Java 8 fue mucho más fácil, sin necesidad de terceros:

 final List words = Arrays.asList("one", "two", "three", "four"); String wordsAsString = words.stream().reduce((w1, w2) -> w1 + "," + w2).get(); System.out.println(wordsAsString); 

Solo usa el método toString ().

 String s = arrayListWords.toString(); System.out.println(s); //This will print it like this: "[one, two, three, four]" //If you want to remove the brackets you can do so easily. Just change the way you print.