Consider following code:
ArrayList<Integer> aList = new ArrayList<Integer>();
aList.add(2134);
aList.add(3423);
aList.add(4234);
aList.add(343);
String tmpString = "(";
for(int aValue : aList) {
tmpString += aValue + ",";
}
tmpString = (String) tmpString.subSequence(0, tmpString.length()-1) + ")";
System.out.println(tmpString);
My result here is (2134,3423,4234,343) as expected..
I do replace the last comma with the ending ) to get expected result. Is there a better way of doing this in general?
You could use Commons Lang:
String tmpString = "(" + StringUtils.join(aList, ",") + ")";
Alternatively, if you can't use external libraries:
StringBuilder builder = new StringBuilder("(");
for (int aValue : aList) builder.append(aValue).append(",");
if (aList.size() > 0) builder.deleteCharAt(builder.length() - 1);
builder.append(")");
String tmpString = builder.toString();
Since Java 8 you can also do:
ArrayList<Integer> intList = new ArrayList<Integer>();
intList.add(2134);
intList.add(3423);
intList.add(4234);
intList.add(343);
String prefix = "(";
String infix = ", ";
String postfix = ")";
StringJoiner joiner = new StringJoiner(infix, prefix, postfix);
for (Integer i : intList)
joiner.add(i.toString());
System.out.println(joiner.toString());
You will have to replace the last comma with a ')'. But use a StringBuilder instead of adding strings together.
How about this from google-guava
String joinedStr = Joiner.on(",").join(aList);
System.out.println("("+JjoinedStr+")");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With