轉載請註明來源:http://blog.csdn.net/kjunchen/article/details/51553707
自己在開發中遇到的一些常見的小問題,記錄下來方便查。
1、關於List.remove()與List.subList()
1/20/2016 3:15:20 PM
最近在項目中發現,當非常頻繁地調用List.subList()時,就會產生java.lang.StackOverflowError(棧溢出)異常,想了好長時間都沒有解決,不用嗎又不行,需求所致,最後就像,既然截取不行那就刪嘛,因此我就使用remove()方法試了試,結果問題就這麼給解決了,真的是fun,困擾了我好長時間。
當List中的數據很簡單時,remove()比subList()快,而在我的項目中,由於List中的數據稍複雜點,量又比較大,測得remove()比subList()慢。
現在假設List中有20個數據,需要去掉前面10個數據而保留11~20的數據,採用如下兩種方式,最後所得的結果都是一樣的。
int subLength = 10;//Remove the first 10
//One
mList = mList.subList((mList.size() - subLength), mList.size());
//Two
for (int i = (subLength - 1); i >= 0; i--) {
mList.remove(i);
}
如果你有遇到這樣的問題,可以嘗試下看能否解決問題,如有更好的方式解決,請給我留言或Email: [email protected]
2、關於setResult()調用問題
調用setResult()必須在finish()之前,在onPause()、onStop()、onDestroy()中調用無作用。
3、字符串 == “” 和 字符串 == “ ”區別
如果一個字符串的內容爲空,那麼該字符串 == “” 則爲true,而該字符串 == “ ”則爲false,有一個空格則證明不是空的,所以在對字符串進行空內容判斷時一定要注意,判斷字符串是否爲空也可直接調用 String.isEmpty() 方法。使用等號進行判斷是容易出問題的,建議調用方法判斷。
歡迎加QQ羣交流: 365532949
Homepage: http://junkchen.com