Пустой ArrayList равняется пустому указателю

Пустой Arraylist (с пустыми указателями как его объекты) быть рассмотренным как пустой указатель? Так, по существу был бы ниже оператора быть верным:

if (arrayList != null) 

спасибо

31
задан Rahul Jain 17 July 2018 в 14:55
поделиться

6 ответов

Нет.

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;
}
70
ответ дан 27 November 2019 в 21:32
поделиться

Нет, это не сработает. Лучшее, что вы сможете сделать, это перебрать все значения и проверить их самостоятельно:

boolean empty = true;
for (Object item : arrayList) {
    if (item != null) {
        empty = false;
        break;
    }
}
5
ответ дан 27 November 2019 в 21:32
поделиться

Точно так же, как ноль - это число - просто число, которое ничего не представляет, - пустой список по-прежнему остается списком, просто списком, в котором ничего нет. null - это вообще не список; поэтому он отличается от пустого списка.

Точно так же список, содержащий пустые элементы, является списком, а не не пустым списком. Потому что в нем есть предметы; не имеет значения, что эти элементы сами по себе равны нулю. Например, список с тремя нулевыми значениями в нем и ничего больше: какова его длина? Его длина равна 3. Длина пустого списка равна нулю. И, конечно же, у null нет длины.

2
ответ дан 27 November 2019 в 21:32
поделиться

Нет, поскольку он содержит элементы, должен быть его экземпляр. Его элементы, имеющие значение NULL, не имеют значения, поэтому статус ((arrayList)! = Null) == true

1
ответ дан 27 November 2019 в 21:32
поделиться

Прежде всего, вы можете проверить это самостоятельно, написав простой TestCase!

пустой Arraylist (с нулями в качестве его элементов)

Во-вторых, если ArrayList имеет значение EMPTY, что означает, что он действительно пуст , он не может иметь NULL или NON-NULL в качестве элемента.

В-третьих,

 List list  = new ArrayList();
    list.add(null);
    System.out.println(list == null)

выведет false.

0
ответ дан 27 November 2019 в 21:32
поделиться

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.

22
ответ дан 27 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: