Hier, was ich mir ausgedacht habe. Es gibt mehrere Möglichkeiten, dies zu tun und sie sind abhängig von den Tools, die Sie verwenden.
Mit StringUtils
und ArrayUtils
von Common Lang:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = StringUtils.join(ArrayUtils.toObject(arr), " - ");
Sie können nicht nur StringUtils.join(arr, " - ");
weil StringUtils
verwendet nicht, dass überladene Version der Methode haben. Obwohl es Methode StringUtils.join(int[], char)
hat.
Funktioniert in jeder Java-Version, von 1.2.
mit Java 8 Streams:
Etwas wie folgt aus:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = Arrays.stream(arr)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" - "));
In der Tat gibt es viele Variationen des Ergebnisses mit Hilfe von Streams achive.
Java 8 Methode String.join()
nur mit Strings arbeitet, so dass es zu benutzen Sie noch int[]
zu String[]
konvertieren.
String[] sarr = Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new);
String result = String.join(" - ", sarr);
Wenn Sie mit Java 7 oder früher ohne Bibliotheken stecken, könnten Sie Ihre eigene Hilfsmethode schreiben:
public static String myJoin(int[] arr, String separator) {
if (null == arr || 0 == arr.length) return "";
StringBuilder sb = new StringBuilder(256);
sb.append(arr[0]);
//if (arr.length == 1) return sb.toString();
for (int i = 1; i < arr.length; i++) sb.append(separator).append(arr[i]);
return sb.toString();
}
als Sie tun können:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = myJoin(arr, " - ");
Sie können '.collect (Collectors.joining (", "))' anstelle des Temp-String-Arrays. – shmosel
Schöner Überblick! Für die Java 1.7-Version: Technisch gesehen benötigen Sie den arr.length == 1-Check vor der Schleife nicht, aber das funktioniert auch perfekt. – n247s
@smossel, nein. 'Arrays.stream (arr)' erzeugt einen 'IntStream' und darin gibt es keine solche' collect() 'Methode. – spirit