臨時想到了關於功能的效能問題
所以就稍微記了一下
他大概的程式碼如下
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判斷,執行時間跟記憶體空間都能節省到
可讀性的問題也可以用,提供給大家參考!
沒有留言:
張貼留言