Java: lista de conversión Encadenar

3 minutos de lectura

¿Cómo puedo convertir List<Integer> to String? Por ejemplo, si mi List<Integer> contiene los números 1, 2 y 3, ¿cómo se puede convertir a String = “1,2,3”? Toda ayuda será apreciada.

  • ¿Por qué los votos negativos? Es una buena pregunta y ni @GermannArlington ni orangegoat la han respondido.

    – José

    2 de noviembre de 2012 a las 15:58

  • Probablemente porque “la pregunta no muestra ningún esfuerzo de investigación”.

    – JB Nizet

    2 de noviembre de 2012 a las 15:59

  • Aún así, es una pregunta útil y por la respuesta no es obvia. Creo que es bastante obvio que si un usuario hace una pregunta como esta, es muy nuevo en el idioma y, por lo tanto, esta es una pregunta razonable. Si no hay preguntas duplicadas (no las verifiqué), entonces ese es un caso aún más sólido. EN MI HUMILDE OPINIÓN.

    – José

    2 de noviembre de 2012 a las 16:04

  • Traté de encontrar una solución pero no pude encontrar una solución que resuelva mi problema. no entiendo que tiene de malo mi pregunta…

    – Martín

    2 de noviembre de 2012 a las 16:08

  • @Martin, Joe: cuando haga esa pregunta, no solo pida una solución para su problema. Muestre lo que ha intentado para resolver el problema y explique con qué tiene problemas. Esto es lo que constituye un “esfuerzo de investigación”. De lo contrario, simplemente parece: “Oye, soy demasiado perezoso para descubrir cómo hacer esto tan simple. ¿Alguien podría hacerlo por mí?”.

    – JB Nizet

    2 de noviembre de 2012 a las 16:11


Avatar de usuario de Yogendra Singh
Yogendra Singh

Creo que puedes usar simplemente List.toString() como a continuación:

List<Integer> intList = new ArrayList<Integer>();
intList.add(1);
intList.add(2);
intList.add(3);


String listString = intList.toString();
System.out.println(listString); //<- this prints [1, 2, 3]

si no quieres [] en la cadena, simplemente use la subcadena, por ejemplo:

   listString = listString.substring(1, listString.length()-1); 
   System.out.println(listString); //<- this prints 1, 2, 3

Tenga en cuenta: List.toString() usos AbstractCollection#toString método, que convierte la lista en String como arriba

  • Supongo que el formato de la cadena devuelta por AbstractCollection#toString es específico de la implementación.

    – ed22

    29 de agosto de 2019 a las 7:30

  • Esto es un poco raro y anticuado en mi opinión.

    – Ahmad Abdelgany

    el dia de ayer

Avatar de usuario de JB Nizet
JB Nizet

Con Guayaba:

String s = Joiner.on(',').join(integerList);

  • Votante negativo: ¿por qué el voto negativo? ¿No encuentras lo anterior mucho más elegante y legible que las otras opciones?

    – JB Nizet

    2 de noviembre de 2012 a las 16:09


  • Creo que esta respuesta es válida para la pregunta. OP no especificó explícitamente que no quiere usar bibliotecas de terceros. Lo compensaré con +1.

    – kosa

    2 de noviembre de 2012 a las 16:11

En vanilla Java 8 (streams) puedes hacer

// Given numberList is a List<Integer> of 1,2,3...

String numberString = numberList.stream().map(String::valueOf)
    .collect(Collectors.joining(","));

// numberString here is "1,2,3"

  • Mejor, mejor y más nueva forma de hacerlo correctamente ++1!

    – Camila

    6 de diciembre de 2019 a las 9:53

avatar de usuario de kosa
kosa

Una forma sería:

Iterate sobre la lista, agregue cada elemento a StringBuffer (o) StringBuilder y hacer toString() al final

Ejemplo:

StringBuilder strbul  = new StringBuilder();
     Iterator<Integer> iter = list.iterator();
     while(iter.hasNext())
     {
         strbul.append(iter.next());
        if(iter.hasNext()){
         strbul.append(",");
        }
     }
 strbul.toString();

Solo para agregar otra (de muchas) opciones de una biblioteca popular (Apache Commons):

import org.apache.commons.lang3.StringUtils;

String joinedList = StringUtils.join(someList, ",");

Ver documentación: https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#join-java.lang.Iterable-java.lang.String-


Una opción elegante de los comentarios de otros (a partir de Java 8):

String joinedList = someList.stream().map(String::valueOf).collect(Collectors.joining(","));

¿Ha sido útil esta solución?