Salida del contenido de una ArrayList como una cadena separada por comas

Estoy tratando de agregar un separador de comas a la representación de cadena de una Java ArrayList, pero nada parece funcionar, obviamente me falta algo simple.

Tristemente viejo Java 6 (ejecutándose en un JSP):

ArrayList zones= new ArrayList();
zones.add(pageContext.getAttribute("zone"));

for(int i=0; i<zones.size(); i++)
out.println(zones.get(i));

// output is   CellA116 CellA116 CellA116 Reception Reception CellA11

StringBuffer stringBuffer = new StringBuffer();
for(int i=0; i<zones.size(); i++)
{
stringBuffer.append(zones.get(i));
stringBuffer.append(",");
}

out.println(stringBuffer.toString());

// output is   CellA116,CellA116,CellA116,Reception,Reception,CellA11,  (commas)

  %>     

</tr>
</c:forEach>

syntax wont work here (outside of loop)
out.println(stringBuffer.substring(0, stringBuffer.length() - 1));

Necesito eliminar la coma final (ya que eventualmente quiero usar la matriz en chart.js), agradezco cualquier pensamiento.

Respuesta 1

En términos generales, confiar en un toString()método para hacerlo es una manera fácil de introducir errores inadvertidamente más adelante. Si cambia qué clase concreta está proporcionando la colección (tal vez a una en Setlugar de a, Listpor ejemplo), su suposición de que comienza y termina con corchetes podría ser falsa, y su salida podría cambiar sin darse cuenta.

Sugeriría que una solución más apropiada sería iterar sobre la colección de cadenas y agregarlas a a StringBuilder.

Entonces, podría verse algo así como:

StringBuilder stringBuilder = new StringBuilder();
for(int i=0; i<strList.size(); i++)
{
    stringBuilder.append(strList.get(i));
    stringBuilder.append(",");
}

// Remove the last character from the StringBuilder to avoid a trailing comma.
String commaSeparatedList = stringBuilder.substring(0, stringBuilder.length() - 1);

out.println(commaSeparatedList);
Respuesta: 2

Estoy implementando una vista personalizada y quiero poder cambiar su tamaño en tiempo de ejecución. Simplificando el problema: necesito mostrar un mapa de bits en esta vista, pero como se actualiza con frecuencia me gustaría ...

Estoy configurando un patrón MVVM en mi aplicación de Android usando la clase ViewModel de Android. Ahora necesito enviar eventos (eventualmente con datos) desde mi ViewModel al Fragment. Anteriormente yo y mi ...

Estoy usando la API del extractor de metadatos para extraer metadatos de una imagen. Luego estoy usando Java para crear un archivo .txt con todos los datos. Sin embargo, cuando ejecuto el archivo, tengo nullpointexception. Lo sé ...

Estoy creando CreateOrUpdateProduct API uso Spring boot. Quiero volver al consumidor dos campos ('mensaje e isOk'). Pero cuando ejecuto esta API, recibí los campos ('mensaje y ok'). que es ...