请考虑以下代码:
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);
我的结果如预期那样是(2134,3423,4234,343)..
我将最后一个逗号替换为结尾)以获得预期结果。有没有更好的方法来做到这一点?
答案 0 :(得分:16)
您可以使用Commons Lang:
String tmpString = "(" + StringUtils.join(aList, ",") + ")";
或者,如果您不能使用外部库:
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();
答案 1 :(得分:5)
自 Java 8 以来,你也可以这样做:
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());
答案 2 :(得分:2)
您必须使用')'替换最后一个逗号。但是使用StringBuilder而不是一起添加字符串。
答案 3 :(得分:2)
String joinedStr = Joiner.on(",").join(aList);
System.out.println("("+JjoinedStr+")");
答案 4 :(得分:1)
建立Mateusz的Java 8示例,StringJoiner JavaDoc中的一个示例几乎可以满足OP的要求。略微调整它看起来像这样:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
String commaSeparatedNumbers = numbers.stream()
.map(i -> i.toString())
.collect( Collectors.joining(",","(",")") );
答案 5 :(得分:0)
如果您使用了Iterator
,则可以在循环中测试hasNext()
,以确定是否需要附加逗号。
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(")");
答案 6 :(得分:-1)
for(int aValue : aList) {
if (aValue != aList.Count - 1)
{
tmpString += aValue + ",";
}
else
{
tmpString += aValue + ")";
}
}
也许?