使用StringBuilder生成逗号分隔的列表

时间:2015-10-07 08:35:18

标签: java

以下是我的方案,虽然我已经达到了所需的输出但我希望它是一个不错的优化代码。

String arr[]={"we","er","rtt","yu","uu","ii"};

      StringBuilder strcat = new StringBuilder();

      for(int i1=0;i1<arr.length;i1++)
      {
          // Some processing
         strcat.append(arr[i1]);

         if(arr.length-1!=i1)
         {

              strcat.append(",");
         }
      }

     System.out.println("Value:"+strcat);

我有String[]数组和一些处理,处理后我想用逗号(,)附加值。 问题是逗号,它也附加到最后的值,我不想要,我已经应用了一个逻辑。我不知道它是否正确。但是输出是正确的。如果我错了,请纠正我,并建议是否有任何其他方法可以实现。

6 个答案:

答案 0 :(得分:13)

我在这里学到了很好的技巧

String SEPARATOR = "";
for(int i1=0;i1<arr.length;i1++)
{
    // Some processing
    strcat.append(SEPARATOR);
    strcat.append(arr[i1]);
    SEPARATOR = ",";
}

答案 1 :(得分:10)

如果你正在使用Java 8,那么String

已经支持了这一点
String result = String.join(",", arr);

将导致

"we,er,rtt,yu,uu,ii"

答案 2 :(得分:0)

Java 8的流API允许更简洁的解决方案:

String result = Arrays.asList(arr).stream().collect(Collectors.joining(","));

答案 3 :(得分:0)

你可以这样做:

 strcat.append(arr[0]);
 for (int iCnt = 1;iCnt <arr.length;++iCnt) {
     strcat.append(",").append(arr[iCnt]);
 }

答案 4 :(得分:0)

我通常看到的两种方法是:

  • 在每个元素后附加逗号,然后在使用结果
  • 之前删除最后一个字符
  • 将逗号添加到除第一个之外的所有元素(通过这种方式检查更简单,您只需检查strcat.length() == 0

答案 5 :(得分:0)

您可以先添加第0个数组元素(确保数组大小至少为1之后),然后在每个元素之前添加逗号,从1到长度为1。

或者您可以按照您的方式执行此操作,然后通过使用StringBuilder.setLength(int)缩短缓冲区来删除最后一个逗号。