Je veux parfois concaténer des tableaux et des listes avec des chaînes séparées par des virgules en Java, et je me suis demandé s'il y avait un moyen autre que la classe StringJoiner, alors j'ai pris une note. Finalement, j'ai utilisé StringUtils # join (). S'il s'agissait d'un tableau String, String # join () aurait été bien, mais comme il s'agissait d'un tableau int, j'ai choisi StringUtils.
A partir de là, je présenterai ce que j'ai étudié.
La classe StringJoiner est disponible à partir de Java 7. S'il ne s'agit pas d'un tableau de type String, il doit être converti en type String.
import java.util.StringJoiner;
import java.util.Arrays;
public class StringJoinerSample {
public static void main(String args[]) {
int[] arr = {1, 2, 3, 4, 5};
StringJoiner sj = new StringJoiner(",");
Arrays.stream(arr).forEach(i -> sj.add(String.valueOf(i)));
System.out.println(sj.toString()); // => 1,2,3,4,5
}
}
Pour les tableaux de String, vous pouvez utiliser String # join ()
.
String # join ()
peut être utilisé à partir de Java 8.
public class MyClass {
public static void main(String args[]) {
String[] arr = {"en", "ja", "fr", "es", "zh"};
String str = String.join(",", arr);
System.out.println(str); // => en,ja,fr,es,zh
}
}
Vous pouvez également prendre une liste comme argument.
import java.util.Arrays;
import java.util.List;
public class MyClass {
public static void main(String args[]) {
List<String> list = Arrays.asList("en", "ja", "fr", "es", "zh");
String str = String.join(",", list);
System.out.println(str); // => en,ja,fr,es,zh
}
}
S'il s'agit d'une collection de type List
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class MyClass {
public static void main(String args[]) {
List<String> list = Arrays.asList("en", "ja", "fr", "es", "zh");
String str = list.stream().collect(Collectors.joining(","));
System.out.println(str); // => en,ja,fr,es,zh
}
}
Il est également possible de mettre le recto et le verso entre parenthèses ().
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class MyClass {
public static void main(String args[]) {
List<String> list = Arrays.asList("en", "ja", "fr", "es", "zh");
String str = list.stream().collect(Collectors.joining(",", "(", ")"));
System.out.println(str); // => (en,ja,fr,es,zh)
}
}
La classe StringUtils se trouve dans org.apache.commons: commons-lang3. Vous devez installer la bibliothèque avec gradle ou maven.
org.apache.commons:commons-lang3:3.6
Vous pouvez l'écrire sur une seule ligne comme suit.
Puisque StringUtils # join ()
prend un tableau d'objets comme argument
J'utilise ʻArrayUtils # toObject () `pour convertir en un tableau de classe Integer.
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
public class MyClass {
public static void main(String args[]) {
int[] arr = {1,2,3,4,5};
String str = StringUtils.join(ArrayUtils.toObject(arr), ",");
System.out.println(str); // => 1,2,3,4,5
}
}
Une autre option consiste à utiliser la classe Joiner de Google Guava.
Merci d'avoir lu pour moi jusqu'à la fin. Si vous avez des lacunes ou des questions, veuillez utiliser la section commentaires, demande de modification, Twitter, etc. J'apprécierais que vous me disiez s'il existe un autre moyen.
Recommended Posts