簡體   English   中英

哪一個更好的方法清除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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM