字符串生成器到java中的字符串数组

Ano*_*ous 5 java arrays stringbuilder

我试图在java中将String builder转换为String数组。我已经习惯于String方法将Stringbuilder转换为String,然后使用split方法将其转换为String数组。

我在数组大小方面遇到了一些问题。字符串生成器的输出如下:0,,1,,,,,,,,,,2,,,。实际上它包含15个元素,但它显示stringbuilder的大小为18。转换为String数组后,它显示大小为13。

我做错方法了吗?是否有其他方法可以将 String builder 转换为 String Array?

StringBuilder output = new StringBuilder();

for (String str : listToSearch) {
    int index = findIndex(headerArrayList, str);
    if (index > -1) {
        output.append(index);
    } else {
        output.append(str);
    }
    output.append(",");
}

String out = output.toString();
String[] destIndexArray = out.split(",");
Run Code Online (Sandbox Code Playgroud)

findIndex方法:

private static int findIndex(List<String> headerList, String element) {
    for (int i = 0; i < headerList.size(); i++) {
        if (headerList.get(i).equals(element)) {
            return i;
        }
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

Azo*_*ous 5

我做错方法了吗?

您的代码有很多地方需要改进。我建议一些:

  1. 不要重新发明轮子,而是寻找现有的 API:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object)

  1. 您可以仅添加Strings 而不是索引。

for (String str :listToSearch) {
    int index=headerArrayList.indexOf(str);
    if (index < 0) {
        output.append(str);
        output.append(",");
    }
    // if(!headerArrayList.contains(str))
    // output.append(str);
    // output.append(",");
}
Run Code Online (Sandbox Code Playgroud)
  1. 使用List<String>而不是StringBuilder.

是否还有其他方法将字符串生成器转换为字符串数组?

是的,但是如果你遵循以上几点,你就不需要它了。但既然你问了。请参阅:如何最好地将 StringBuilder 转换为 String[]?