Burada neyle karşılaştım. Bunu yapmanın birkaç yolu vardır ve bunlar kullandığınız araçlara bağlıdır. Common Lang den StringUtils
ve ArrayUtils
kullanma
:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = StringUtils.join(ArrayUtils.toObject(arr), " - ");
sadece StringUtils.join(arr, " - ");
StringUtils
çünkü kullanamaz yöntemin bu aşırı sürümü yok. Yine de, StringUtils.join(int[], char)
yöntemine sahiptir.
Herhangi bir Java sürümünde, 1.2'den çalışır.
kullanma Java 8 akışları: Böyle
şey:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = Arrays.stream(arr)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" - "));
Aslında akışları kullanarak sonuca ulaşmada varyasyonların yeri vardır. dizeleri ile çalışır String.join()
Java 8'in metodu, böylece yine String[]
için int[]
dönüştürmek zorunda kullanmak.
String[] sarr = Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new);
String result = String.join(" - ", sarr);
sen, kendi yarar yöntem yazabilirsiniz önce hiçbir kütüphanelerle Java 7 veya kullanarak sıkışmış ise:
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();
}
Yapabileceğiniz daha:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = myJoin(arr, " - ");
Geçici dizin dizisi yerine .collect (Collectors.joining (",")) 'dır. – shmosel
Güzel bakış! Java 1.7 sürümü için: Teknik olarak arr.length == 1 döngüsünden önce kontrol etmenize gerek yok ama bu da mükemmel çalışıyor. – n247s
@shmosel, nope. 'Arrays.stream (arr) 'bir“ IntStream ”üretir ve içinde böyle bir' collect() 'yöntemi yoktur. – spirit