数组转换成字符串在写代码的时候经常遇到,比如拼接SQL等,经常需要把数组中的元素拿出来按照某种规则拼接。
例如:要将数组int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 ... N}; 变成 1, 2, 3, 4, 5, 6, 7, 8, 9...N
最普遍的写法就是在for循环中判断是否是最后一个元素。
StringBuilder buffer = new StringBuilder(N);
for (int i = 0; i < N; i++) {
buffer.append(arr[i]);
if (i < N - 1) {
buffer.append(arr[i]);
}
}
这种写法最大的问题就是要判断N次是否是最后一个元素, 一种改进的方法不做if判断
StringBuilder buffer = new StringBuilder(N);
for (int i = 0; i < N-1; i++) {
buffer.append(arr[i]);
buffer.append(", ");
}
buffer.append(arr[N-1]);
对比第一种方法 显然减少了N次判断
看看JAVA中源码是怎么处理的
java.util.Arrays
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0;; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
源码中和第一种写法类似。
建议采用第二种方法,性能会更好。