網頁

2017/9/8

Java 如何將ArrayList<String>中的字串合併並以逗號分隔

在Java如何將將ArrayList<String>中的字串合併並以逗號分隔?

通常對新手來說這問題要問的其實是要怎麼把最前面(或最後面)多出來的逗號刪除,請參考下範例。

List list = new ArrayList();
list.add("台北");
list.add("桃園");
list.add("新竹");
list.add("苗栗");
list.add("宜蘭");

System.out.println(list.toString()); // [台北, 桃園, 新竹, 苗栗, 宜蘭]

StringBuilder sb = new StringBuilder();
if(list != null && list.size() > 0){
 for(int i = 0 ; i < list.size(); i++) {
  sb.append(i == 0 ? list.get(i) : "," + list.get(i)); // 使用三元運算子判斷是否為第一筆
 }
}
System.out.println(sb.toString()); // 台北,桃園,新竹,苗栗,宜蘭


// 使用 Apache Commons Lange 的StringUtils
System.out.println(StringUtils.join(list, ",")); // 台北,桃園,新竹,苗栗,宜蘭

// 使用Java 8 String.join()
String.join(",", list);  // 台北,桃園,新竹,苗栗,宜蘭

List直接呼叫toString()則會多了前後的方括弧。邏輯是如果是List中的第一筆字串,則前面不加逗號,而之後的每一筆字串的前面都要加上逗號,然後全部串接起來。

更快的方法就是用Apache Commons Lang提供的StringUtils.join()方法,使用前要將jar加入專案並Import到類別中。

或使用Java 8的String.join()

沒有留言:

張貼留言