从ArrayList创建格式化字符串

Ste*_*anE 9 java string

考虑以下代码:

    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);
Run Code Online (Sandbox Code Playgroud)

我的结果是(2134,3423,4234,343)如预期的那样..

我将最后一个逗号替换为结尾)以获得预期结果.总的来说有更好的方法吗?

Rob*_*ska 16

你可以使用Commons Lang:

String tmpString = "(" + StringUtils.join(aList, ",") + ")";
Run Code Online (Sandbox Code Playgroud)

或者,如果您不能使用外部库:

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();
Run Code Online (Sandbox Code Playgroud)


MrM*_*ros 6

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());
Run Code Online (Sandbox Code Playgroud)