Reputation: 7630
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?
Upvotes: 10
Views: 26839
Reputation: 121
Building off Mateusz's Java 8 example, there's an example in the StringJoiner JavaDoc that nearly does what OP wants. Slightly tweaked it would look like this:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
String commaSeparatedNumbers = numbers.stream()
.map(i -> i.toString())
.collect( Collectors.joining(",","(",")") );
Upvotes: 1
Reputation: 643
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());
Upvotes: 8
Reputation: 120286
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();
Upvotes: 17
Reputation: 80176
How about this from google-guava
String joinedStr = Joiner.on(",").join(aList);
System.out.println("("+JjoinedStr+")");
Upvotes: 2
Reputation: 18445
If you used an Iterator
you could test hasNext()
inside your loop to determine whether you needed to append a comma.
StringBuilder builder = new StringBuilder();
builder.append("(");
for(Iterator<Integer> i=aList.iterator(); i.hasNext();)
{
builder.append(i.next().toString());
if (i.hasNext()) builder.append(",");
}
builder.append(")");
Upvotes: 0
Reputation: 23629
You will have to replace the last comma with a ')'. But use a StringBuilder instead of adding strings together.
Upvotes: 2
Reputation: 30882
for(int aValue : aList) {
if (aValue != aList.Count - 1)
{
tmpString += aValue + ",";
}
else
{
tmpString += aValue + ")";
}
}
Perhaps?
Upvotes: -1