[英]Which approach is better for finding the frequency of element in an arraylist?
[英]Which one is better approach for clear arrayList?
我需要清除數組列表,哪一種方法更好?為什么?
方法1:
List list = new ArrayList();
list.add("ram");
if(list!=null)
{
list.clear();
}
方法2:
List list = new ArrayList();
list.add("ram");
if(list!=null && !list.isEmpty())
{
list.clear();
}
在方法1中,我不檢查列表是否為空,直接我已經清除了列表。
但是在方法2中,如果列表不是空的,我已經通過檢查清除了列表
if(list!=null && !list.isEmpty())
哪一種方法更好?方法1還是方法2?
第一,嘗試使用泛型:
List<String> list = new ArrayList<String>();
list.add("ram");
由於它現在已初始化,因此無需進行空檢查。
現在,如果你需要堅持一個特定的合同,你可以檢查列表是否為空,但正如@Puce所說,這是微優化。
list.clear();
這取決於實現,例如ArrayList(這是它的clear
方法代碼):
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
意味着如果列表已經為空,代碼不會花費更多時間。 從這個意義上說,我只需要像第一種方法那樣清除代碼。
至於clear()
的源代碼,它不檢查集合是否為空。
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
但這是一個非常小的優化,我想你應該只在遇到性能問題時才能解決這個問題。
你可以使用這兩個版本,無論如何如果列表不為空你想要清除它,如果列表為空,那么clear()方法將很快執行,所以...不要打擾
沒關系。 clear()
與對isEmpty()
的檢查的開銷是1行代碼,一個modcount++;
這取決於clear()
的實現方式。 這是一個微觀優化,所以我建議不要花太多時間考慮這個。
由於ArrayList
是基於數組的,因此您無需檢查它是否為空。 因此,我最喜歡第一種方法,因為它具有“微觀”的高性能
再次初始化列表。
List list = new ArrayList();
list.add("ram");
if(list!=null && !list.isEmpty())
{
list = new ArrayList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.