Пустой Arraylist (с пустыми указателями как его объекты) быть рассмотренным как пустой указатель? Так, по существу был бы ниже оператора быть верным:
if (arrayList != null)
спасибо
Нет.
ArrayList может быть пустым (или содержать значения NULL в качестве элементов) и не иметь значения NULL. Это будет считаться пустым. Вы можете проверить наличие пустого ArrayList с помощью:
ArrayList arrList = new ArrayList();
if(arrList.isEmpty())
{
// Do something with the empty list here.
}
Или, если вы хотите создать метод, который проверяет наличие ArrayList только с нулями:
public static Boolean ContainsAllNulls(ArrayList arrList)
{
if(arrList != null)
{
for(object a : arrList)
if(a != null) return false;
}
return true;
}
Нет, это не сработает. Лучшее, что вы сможете сделать, это перебрать все значения и проверить их самостоятельно:
boolean empty = true;
for (Object item : arrayList) {
if (item != null) {
empty = false;
break;
}
}
Точно так же, как ноль - это число - просто число, которое ничего не представляет, - пустой список по-прежнему остается списком, просто списком, в котором ничего нет. null
- это вообще не список; поэтому он отличается от пустого списка.
Точно так же список, содержащий пустые элементы, является списком, а не не пустым списком. Потому что в нем есть предметы; не имеет значения, что эти элементы сами по себе равны нулю. Например, список с тремя нулевыми значениями в нем и ничего больше: какова его длина? Его длина равна 3. Длина пустого списка равна нулю. И, конечно же, у null нет длины.
Нет, поскольку он содержит элементы, должен быть его экземпляр. Его элементы, имеющие значение NULL, не имеют значения, поэтому статус ((arrayList)! = Null) == true
Прежде всего, вы можете проверить это самостоятельно, написав простой TestCase!
пустой Arraylist (с нулями в качестве его элементов)
Во-вторых, если ArrayList имеет значение EMPTY, что означает, что он действительно пуст , он не может иметь NULL или NON-NULL в качестве элемента.
В-третьих,
List list = new ArrayList();
list.add(null);
System.out.println(list == null)
выведет false.
arrayList == null
, если нет экземпляра класса ArrayList
, присвоенного переменной arrayList
(обратите внимание на верхний регистр для классов и строчные буквы для переменных).
Если в любое время вы выполните arrayList = new ArrayList ()
, тогда arrayList! = Null
, потому что указывает на экземпляр класса ArrayList
Если вы хотите знать, пуст ли список, выполните
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.
}
Если вам не нужны пустые элементы в вашем списке, я бы посоветовал вам расширить класс ArrayList своим собственным, например:
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);
}
}
Или, может быть, вы можете расширите его, чтобы в вашем собственном классе был метод, который переопределяет концепцию «пустого списка».
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.
}
}
Последние два подхода представляют собой более объектно-ориентированные, более элегантные и многоразовые решения.
Обновлено с предложением Джеффа IAE вместо NPE.