close

之前看到某個系統把陣列轉成字串的功能
臨時想到了關於功能的效能問題
所以就稍微記了一下
他大概的程式碼如下

 public String arrayToString(String[] input){

StringBuffer result = new StringBuffer();

if(input!=null){

boolean isFirstElement = true;

for(int i = 0; i<input.length; i++){

if(isFirstElement){

result.append(input[i]);

} else {

result.append(", ");

result.append(input[i]);

}

}

}

return result.toString();

}





這段大概的意思是將一個陣列轉成字串
第一個字以後都要用", "分開,所以需要用isFirstElement來判斷是不是第一筆資料
可是我覺得這個寫法除了多了一個暫存值以外
每個迴圈都要判斷一次是不是第一個感覺效能不是很好
於是我就思考如何把那個if去掉
後來想到的方法如下



public String arrayToString(String[] input){

StringBuffer result = new StringBuffer();

if(input!=null && input.length>0){

result.append(input[0]);



for(int i = 1; i<input.length; i++){

result.append(", ");

result.append(input[i]);


}

}

return result.toString();

}




把for迴圈的i=0,  i<input.length(這句相當於input.length>0)拿掉
將這判斷式移到input!=null的後面
這樣除了把isFirstElement移掉以外
也不會多做if判斷,執行時間跟記憶體空間都能節省到
可讀性的問題也可以用,提供給大家參考!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dnight 的頭像
    Dnight

    D奈老師的部落格

    Dnight 發表在 痞客邦 留言(0) 人氣()