web-dev-qa-db-fra.com

ArrayList of Strings à une seule chaîne

J'ai une liste de chaînes de chaînes (chaque élément individuel de la liste est juste un mot sans espace) et je veux prendre chaque élément et ajouter chaque mot suivant à la fin d'une chaîne.

Donc, disons que la liste de tableaux a 

    element 0 = "hello"
    element 1 = "world,"
    element 2 = "how"
    element 3 = "are"
    element 4 = "you?"

Je veux faire une chaîne appelée phrase qui contient "bonjour le monde, comment vas-tu?"

11
user1874239

Depuis Java 8, cela a été ajouté à l'API Java standard:

String.join() méthodes:

String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"

List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // "foo;bar;baz"

StringJoiner est également ajouté:

StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"

De plus, c'est nullsafe, ce que j'apprécie. Je veux dire par là que si StringJoiner rencontre une null dans une List, il ne jettera pas un NPE:

@Test
public void showNullInStringJoiner() {
    StringJoiner joinedErrors = new StringJoiner("|");
    List<String> errorList = Arrays.asList("asdf", "bdfs", null, "das");
    for (String desc : errorList) {
        joinedErrors.add(desc);
    }

    assertEquals("asdf|bdfs|null|das", joinedErrors.toString());
}
27
Cuga

Utilisez StringUtils pour résoudre ce problème.

par exemple. Apache Commons Lang propose la méthode de jointure.

StringUtils.join(myList,","))

Il parcourra votre tableau ou votre liste de chaînes et les rejoindra, en utilisant le second paramètre comme séparateur. Rappelez-vous, il y a toujours une bibliothèque pour que tout soit facile.

12
Goot

Comme suggéré dans les commentaires, vous pouvez le faire en utilisant StringBuilder:

StringBuilder listString = new StringBuilder();

for (String s : list)
     listString.append(s+" ");
10
dreamcrash

Eh bien, une norme pour la boucle devrait fonctionner:

String toPrint = "";
for(int i=0; i<list.size(); i++){
  toPrint += list.get(i)+" ";
}
System.out.println(toPrint);

J'espère que cela pourra aider!

0
awolfe91

Manière la plus simple:

String ret = "";
for (int i = 0; i < array.size(); i++) {
    ret += array.get(i) + " ";
}

Mais si votre tableau est long, les performances de concaténation sont médiocres. Vous devez utiliser la classe StringBuilder.

0
TieDad

Java 8  

final String concatString= List.stream()
                .collect(Collectors.joining(" "));
0
Niraj Sonawane