Oto, co wymyśliłem. Jest na to kilka sposobów i zależy to od narzędzi, z których korzystasz.
Korzystanie StringUtils
i ArrayUtils
z Common Lang:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = StringUtils.join(ArrayUtils.toObject(arr), " - ");
Nie można po prostu użyć StringUtils.join(arr, " - ");
ponieważ StringUtils
nie ma tej wersji przeciążonej metody. Chociaż ma on metodę StringUtils.join(int[], char)
.
Działa w dowolnej wersji Java, od wersji 1.2.
Korzystanie Java 8 strumienie:
coś takiego:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = Arrays.stream(arr)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" - "));
W rzeczywistości, istnieje wiele odmian do achive wynik za pomocą strumieni.
Metoda Java 8's String.join()
działa tylko z ciągami, więc aby z niej skorzystać, musisz jeszcze przekonwertować int[]
na String[]
.
String[] sarr = Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new);
String result = String.join(" - ", sarr);
Jeśli zatrzymany przy użyciu języka Java 7 lub wcześniej bez bibliotek, można napisać swoją własną metodę użytkowy:
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();
}
niż można zrobić:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = myJoin(arr, " - ");
Możesz użyć '.collect (Collectors.joining (", "))' zamiast tablicy łańcuchów temp. – shmosel
Niezły przegląd! Dla wersji 1.7 java: Z technicznego punktu widzenia nie będziesz potrzebował sprawdzać wartości arr.length == 1 przed pętlą, ale działa to również doskonale. – n247s
@ shmosel, nie. 'Arrays.stream (arr)' tworzy 'IntStream', a nie ma takiej metody' collect() '. – spirit