【问题标题】:String Builder to String Array in java字符串生成器到java中的字符串数组
【发布时间】:2016-12-26 06:10:17
【问题描述】:

我正在尝试将 String builder 转换为 java 中的 String 数组。我使用 to String 方法将 Stringbuilder 转换为 String,然后使用 split 方法将其转换为字符串数组。

我在数组大小方面遇到了一些问题。字符串生成器的输出如下: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;
}

【问题讨论】:

  • 用列表代替字符串生成器怎么样??
  • 您应该使用列表,而不是字符串生成器。最后把它转换成数组
  • 但它同时包含整数值和字符串值。
  • 最后看到,你得到了一个字符串数组。所以在列表中只需将整数保存为字符串。

标签: java arrays stringbuilder


【解决方案1】:

我做错方法了吗?

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

  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(",");
}

  1. 使用List&lt;String&gt; 而不是StringBuilder

还有其他方法可以将String builder转换为String Array吗?

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

【讨论】:

    【解决方案2】:

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

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

    如果你想把它转换成数组,你可以这样做

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

    【讨论】:

      【解决方案3】:

      你有没有简单地用一行代码尝试过

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多