簡體   English   中英

Java ArrayList StringBuilder追加

[英]Java ArrayList StringBuilder appending

將List值附加為String時遇到一個問題。 我將在列表中獲得1個或超過1個值。 然后,我需要將這些字符串附加為一個字符串,並對每個字符串使用一個分隔符。 但最后也增加了逗號。 如何動態刪除此字符串的末尾。 這是我的代碼:

cntList = parseXml(metadata.xml);
if (cntList.size() != 0) {
    // entryCountryMap.put(id, country);
    System.out.println("Size is  ---->" + cntList.size());
    StringBuilder sb = new StringBuilder();
    if (cntList.size() >= 2) {
        for (String s : cntList) {
            sb.append(s);
            sb.append(",");
        }
    }
    System.out.println("StringBuilder ----->" + sb.toString());
}

我的輸出是這樣的:

StringBuilder ----->All Countries,US - United States,

請幫我解決這個問題。 謝謝-拉吉

使用Java 8只需一根襯紙

String.join(",", cntList);

如果您需要在連接到單個字符串之前過濾列表的元素和/或更改字符串,則仍然可以以非常簡潔的方式執行此操作,而無需循環。

cntList.stream().filter(...).map(...).collect(Collectors.joining(","));

...需要替換為您的過濾謂詞和映射器)

我會使用正常for循環。 for循環外的最后一個追加,不帶逗號

if (cntList.size() >= 2) {
    for (int i=0;i<cntList.size()-1;i++) {
        sb.append(cntList.get(i));
        sb.append(",");
    }
    sb.append(cntList.get(cntList.size()-1));
}

只需刪除最后一個字符:

StringBuilder sb = new StringBuilder("foo,");
System.out.println(sb.deleteCharAt(sb.length() - 1)); 

輸出量

foo

更動態地,您可以按索引查找最后一個逗號,然后刪除該逗號以及后面的所有內容:

sb.delete(sb.lastIndexOf(","), sb.length());

正如Pshemo指出的那樣:

sb.setLength(sb.length() - 1); 實際上將比sb.deleteCharAt(sb.length() - 1)表現更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM