2016-12-26 101 views
2

我想字符串生成器,轉換成字符串數組中java.I字符串數組已經使用爲String方法到StringBuilder轉換爲字符串,然後使用分裂方法來轉換它以字符串數組。字符串構建在Java

我正在面對數組大小的問題。 String構建器的輸出如下:0,,1,,,,,,,,,,2,,,。其實它包含15個元素,但它顯示的字符串大小爲18。轉換爲字符串數組後,它顯示大小爲13.

我在做錯誤的方法嗎?是否有其他方法將字符串構建器轉換爲字符串數組?

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

如何使用列表而不是stringbuilder? – 2016-12-26 06:13:16

+0

你應該使用一個列表,而不是String builder。最後只是把它轉換成數組 –

+1

同時檢查:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object) – Azodious

回答

3

我做錯了什麼方法?

有很多地方你的代碼需要改進。我建議一些:

  1. 而是重新發明輪子,尋找現有的API:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object)

  • 只能添加String!而非的索引。

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

  • 使用List<String>代替StringBuilder
  • 是否有其他方法將字符串生成器轉換爲字符串數組?

    是的,但如果你遵循上述要點,你將不需要它。但自從你問。看到這個:How can a StringBuilder best be converted to a String[]?

    1

    請參閱使用stringbuilder並再次操作它並將其轉換爲數組不是一個好主意。相反,插入到一切字符串列表,或檢查字符串整數使用:

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

    如果你想將其轉換成數組,你可以做到這一點

    String[] str = list.toArray(new String[list.size()]) 
    
    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); 
    } 
    } 
    

    我認爲在這種情況下,你可以對你的列表做任何事情,不需要分隔符。希望能幫助到你!