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?"
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());
}
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.
Comme suggéré dans les commentaires, vous pouvez le faire en utilisant StringBuilder
:
StringBuilder listString = new StringBuilder();
for (String s : list)
listString.append(s+" ");
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!
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.
Java 8
final String concatString= List.stream()
.collect(Collectors.joining(" "));