作為程式員,對於產品記憶體的消耗一定要嚴格把關,今天看到一個朋友的回帖,點醒了我:
一個很簡單的問題,應該說經常遇到, 將一個集合/數組中的元素組成一個字串,每個元素之間用一個指定的分隔字元隔開,如 :
List : ["Apple", "MS", "Google"] ⇒ String : "Apple;MS;Google"
以下使用最基本的代碼實現,有三種方式,都大同小異。Code Review 時,有人提出說總覺得不夠雅。
大家如果有雅的實現方式, 那就亮出來吧~
-
Java code
-
public String getContents(List<String> list) throws Exception { StringBuilder sb = new StringBuilder(); for (int i = 0; i < list.size(); i++) { String content = list.get(i); sb.append(content); // 判斷不是list的最後一個元素時,追加分隔字元:";" if (i < list.size() - 1) { sb.append(";"); } } return sb.toString(); }
-
Java code
-
public String getContents(List<String> list) throws Exception { StringBuilder sb = new StringBuilder(); for (String content : list) { sb.append(content).append(";"); } // 截取最後一個分隔字元之前的內容 return sb.substring(0, sb.length() - 1); }
-
Java code
-
public String getContents(List<String> list) throws Exception { StringBuilder sb = new StringBuilder(); for (String content : list) { sb.append(content).append(";"); } // 將最後一個多餘的分隔字元刪除 return sb.deleteCharAt(sb.length() - 1).toString(); }
下面是朋友的回帖
Code:
- public String getContents(List<String> list) throws Exception {
- StringBuilder sb = new StringBuilder();
- for (String content : list)
- sb.append(";").append(content);
- return sb.deleteCharAt(0).toString();
- }
相對於最後一個例子:刪除第一個比刪除最後一個省去減法運算