In many cases, we need to delete the last char of a StringBuilder/StringBuffer. For example, given a int[]{1,2,3}
, to implement a String toString(int[] a)
method, contacting each elements with a comma separator. The output should be 1,2,3
, no tailing comma.
We can easily write a loop:
int[] nums = new int[]{1,2,3,4,5};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
sb.append(nums[i]);
sb.append(",");
}
//here we need to remove the tailing ','
but always we need to remove the tailing ','
. There are two ways to implement it:
sb.deleteCharAt(sb.length() - 1);
and
sb.setLength(sb.length() - 1);
Which one is recommended? Why?
NOTE:
I know what does Arrays.toString
do. That's just an example to describe my question, maybe not quite proper.
This is not a discussion about strings concatenation but the best practices of StringBuffer/StringBuilder.