Un Arraylist vuoto (con valori null come elementi) è considerato null? Quindi, in sostanza, sarebbe la dichiarazione seguente essere vero:Empty ArrayList equivale a nulla
if (arrayList != null)
grazie
Un Arraylist vuoto (con valori null come elementi) è considerato null? Quindi, in sostanza, sarebbe la dichiarazione seguente essere vero:Empty ArrayList equivale a nulla
if (arrayList != null)
grazie
No.
Un ArrayList può essere vuoto (o con i null come elementi) un non essere nullo. Sarebbe considerato vuoto. È possibile verificare la presenza del mattino ArrayList vuota con:
ArrayList arrList = new ArrayList();
if(arrList.isEmpty())
{
// Do something with the empty list here.
}
Oppure, se si desidera creare un metodo che verifica la presenza di un ArrayList con solo valori null:
public static Boolean ContainsAllNulls(ArrayList arrList)
{
if(arrList != null)
{
for(object a : arrList)
if(a != null) return false;
}
return true;
}
No, perché contiene elementi ci deve essere un esempio di esso. I suoi articoli che sono nulla è irrilevante, in modo che lo statment ((arrayList)! = Null) == true
arrayList == null
se non ci sono istanza della classe ArrayList
assegnato alla variabile arrayList
(notare la MAIUSCOLE per le classi e la minuscola per variabili).
Se, in qualsiasi momento, si fa arrayList = new ArrayList()
poi arrayList != null
perché sta puntando a un'istanza della classe ArrayList
Se volete sapere se l'elenco è vuoto, non
if(arrayList != null && !arrayList.isEmpty()) {
//has items here. The fact that has items does not mean that the items are != null.
//You have to check the nullity for every item
}
else {
// either there is no instance of ArrayList in arrayList or the list is empty.
}
Se don 't vuole elementi nulli nel proprio elenco, io suggerirei di estendere la classe ArrayList con il proprio, per esempio:
public class NotNullArrayList extends ArrayList{
@Override
public boolean add(Object o)
{ if(o==null) throw new IllegalArgumentException("Cannot add null items to the list");
else return super.add(o);
}
}
O forse puoi estenderlo per avere un metodo all'interno della tua classe che ridefinisce il concetto di "Lista vuota".
public class NullIsEmptyArrayList extends ArrayList{
@Override
public boolean isEmpty()
if(super.isEmpty()) return true;
else{
//Iterate through the items to see if all of them are null.
//You can use any of the algorithms in the other responses. Return true if all are null, false otherwise.
//You can short-circuit to return false when you find the first item not null, so it will improve performance.
}
}
Gli ultimi due approcci sono più orientati agli oggetti, più eleganti e soluzioni riutilizzabili.
Aggiornamento con suggerimento Jeff IAE anziché NPE.
No, questo non funzionerà. Il meglio che si sarà in grado di fare è per scorrere tutti i valori e verificare voi stessi:
boolean empty = true;
for (Object item : arrayList) {
if (item != null) {
empty = false;
break;
}
}
Quale potrebbe restituire false per un elenco contenente un singolo valore null, quindi forse no. –
@Mark grazie, risolto. Sembra che il titolo 'Empty ArrayList è uguale a zero' mi ha gettato. – krock
Prima di tutto, è possibile verificare da soli, scrivendo un semplice TestCase!
vuota Arraylist (con valori nulli come suoi elementi)
secondo luogo, se ArrayList è vuoto che significa che è veramente vuoto, non può avere cose NULL o non nullo come elemento.
In terzo luogo,
List list = new ArrayList();
list.add(null);
System.out.println(list == null)
sarebbe stampare falsi.
Proprio come zero è un numero - solo un numero che non ne rappresenta nessuno - una lista vuota è ancora una lista, solo una lista senza nulla in essa. null
non è un elenco; è quindi diverso da una lista vuota.
Analogamente, un elenco che contiene elementi null è un elenco ed è non un elenco vuoto. Perché ha oggetti in esso; non importa che quegli oggetti siano essi stessi nulli. Ad esempio, una lista con tre valori nulli in essa, e nient'altro: qual è la sua lunghezza? La sua lunghezza è 3. La lunghezza della lista vuota è zero. E, ovviamente, null non ha una lunghezza.
Se si vuole verificare se l'array contiene elementi con valori nulli, utilizzare questo:
private boolean isListOfNulls(ArrayList<String> stringList){
for (String s: stringList)
if(s != null) return false;
return true;
}
È possibile sostituire <String>
con il tipo corrispondente per le ArrayList
Perché non restituire il valore booleano (tipo primitivo) anziché quello booleano (oggetto)? –
puoi darmi un esempio su come creare una lista di array vuota? – Venki