2014-11-24 23 views
26

È possibile aggiungere valori null a ArrayList anche se ha un parametro di tipo generico?Aggiunta di valori nulli all'arrayist

Es.

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

Se è così, la volontà

itemsList.size(); 

ritorno 1 o 0?

Se è possibile aggiungere valori null a ArrayList, è possibile eseguire il ciclo solo degli indici contenenti elementi come questo?

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

Oppure il ciclo per ogni ciclo annulla i valori nulli nell'elenco?

+11

perché non scrivi un codice per provarli? vedi [chiedi] per la pubblicazione di una domanda valida –

+3

Perché non la esegui e vedi?, eventuali problemi quindi postano qui –

+8

Sì, 1, no, sì. – khelwood

risposta

25

Sì, si può sempre utilizzare null al posto di un oggetto. Basta fare attenzione perché alcuni metodi potrebbero generare errori.

Sarebbe 1.

anche null s verrebbero presi in nel ciclo for, ma si potrebbe usare

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

È possibile aggiungere valori nulli alla ArrayList, e si dovrà verificare la presenza di valori nulli nel loop:

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

    } 
} 

itemsList.size(); avrebbe preso il null in considerazione.

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); 
} 

uscita:

2 
null value 
5 
+1

Grazie, suppongo che il metodo .size() tenga conto anche dei valori nulli. –

0

Si potrebbe creare classe 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); 
    } 
} 

E quindi utilizzarlo:

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