2014-11-24 152 views
26

即使它具有泛型類型參數,我是否可以將null值添加到ArrayList將空值添加到arraylist中

例如,

ArrayList<Item> itemList = new ArrayList<Item>(); 
itemList.add(null); 

如果是這樣,將

itemsList.size(); 

返回1或0?

如果我可以將null的值添加到ArrayList,我可以只循環包含像這樣的項目的索引嗎?

for(Item i : itemList) { 
    //code here 
} 

或者,對於每個循環還會循環通過列表中的空值嗎?

+11

爲什麼不寫一個代碼來嘗試這些?看到[問]發佈一個有效的問題 – 2014-11-24 14:27:24

+3

爲什麼不直接運行它並看到?,任何問題然後發佈在這裏 – 2014-11-24 14:27:31

+8

是的,1,不,是的。 – khelwood 2014-11-24 14:28:29

回答

25

是的,你可以隨時使用null,而不是一個對象。只是要小心,因爲有些方法可能會引發錯誤。

這將是1

null s就在for循環中被考慮進來,但是你可以使用

for(Item i : itemList) { 
     if (i!= null) { 
       //code here 
     } 
} 
20

您可以添加空的ArrayList,你將不得不以檢查循環空:

for(Item i : itemList) { 
    if (i != null) { 

    } 
} 

itemsList.size();將採取null考慮。

List<Integer> list = new ArrayList<Integer>(); 
list.add(null); 
list.add (5); 
System.out.println (list.size()); 
for (Integer value : list) { 
    if (value == null) 
     System.out.println ("null value"); 
    else 
     System.out.println (value); 
} 

輸出:

2 
null value 
5 
+1

謝謝,我猜測.size()方法也會將空值考慮在內。 – 2014-11-24 14:29:16

0

您可以創建的Util類:

public final class CollectionHelpers { 
    public static <T> boolean addNullSafe(List<T> list, T element) { 
     if (CollectionUtils.isEmpty(list) || element == null) { 
      return false; 
     } 

     return list.add(element); 
    } 
} 

而且然後使用它:

Element element = getElementFromSomeWhere(someParameter); 
List<Element> arrayList = new ArrayList<>(); 
CollectionHelpers.addNullSafe(list, element);