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

时间:2016-12-26 06:10:17

标签: java arrays stringbuilder

我正在尝试将String builder转换为java中的String数组。我使用 到String 方法将Stringbuilder转换为String然后使用 拆分 方法将其转换为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(",");

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;
}

3 个答案:

答案 0 :(得分:4)

  

我做错了方法吗?

您的代码需要改进的地方很多。我在暗示一些:

  1. 不要重新发明轮子,而是寻找现有的API:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object)
    1. 您只能添加String而不是索引。
    2. 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(",");
      }
      
      1. 使用List<String>代替StringBuilder
      2.   

        是否有其他方法可以将String builder转换为String Array?

        是的,但如果您遵循以上几点,则不需要它。但既然你问过。请参阅:How can a StringBuilder best be converted to a String[]?

答案 1 :(得分:1)

请参阅使用stringbuilder并再次操作它并将其转换为数组并不是一个好主意。而是将所有内容插入到字符串列表中,并检查字符串是否为整数,请使用:

str.matches("^-?\\d+$");

如果您想将其转换为数组,您可以这样做

String[] str = list.toArray(new String[list.size()])

答案 2 :(得分:0)

您是否只是尝试了一行代码

stringBuilder.toString.split("delimiter")

在您的情况下,可能看起来像

destIndexArray = output.toString.split(",")

如果这不起作用,那么您可以执行此操作而不是转换为StringBuilder

List<String> output = new List<String>();

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

我认为在这种情况下你可以对你的列表做任何事情,不需要分隔符。希望它有所帮助!