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

Java 使用StringBuilder生成逗号分隔的列表,java,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]);

下面是我的场景,虽然我已经实现了所需的输出,但我希望它是一个体面和优化的代码

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);
字符串arr[]={“we”、“er”、“rtt”、“yu”、“uu”、“ii”};
StringBuilder strcat=新的StringBuilder();

对于(inti1=0;i1,如果您使用的是Java8,那么类中已经提供了对此的支持

将导致

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

Java 8的流式API提供了更简洁的解决方案:

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

您可以这样做:

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

对于(int-iCnt=1;iCnt我通常看到的两种方法是:

  • 在每个元素后追加逗号,然后在使用结果之前删除最后一个字符
  • 在除第一个元素之外的所有元素前面加上逗号(这种检查更简单,只需检查
    strcat.length()==0

我在这里学的好把戏

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

对于(int i1=0;i1您可以先附加第0个数组元素(在确保数组大小至少为1之后),然后在从1到长度-1的每个元素之前附加逗号


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

您可以使用第三方库吗?您的JDK版本是什么?我需要纯java版本的。没有任何其他库,Guava的类正是这样做的。如果它是纯java代码,那将非常感谢您也可以尝试用核心JDK打包的
Arrays.toString()
方法…尽管它也会添加一个
[]环绕字符串…这需要额外的代码来处理空数组。这是非常聪明的。):当他使用java 7时,这将不起作用。它不考虑需要处理数组元素的步骤。然而,这是我最喜欢的解决方案。这似乎是一个简单问题的过份……代码> String。
如果我们打算使用Java8,似乎要容易得多…您可以用
数组.asList(arr).stream()替换
数组.stream()
要获得
@vineeth,是时候转移到Java8:)我们有使用Java7的生产和内部客户机,所以我们不能很快地迁移到java8@vineeth你不能抱怨,我的
Java5
应用程序仍在运行:@#!·$****
String SEPARATOR = "";
for(int i1=0;i1<arr.length;i1++)
{
    // Some processing
    strcat.append(SEPARATOR);
    strcat.append(arr[i1]);
    SEPARATOR = ",";
}