[英]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.