Подтвердить что ты не робот

Empty ArrayList равен нулю

Является ли пустой Arraylist (с нулями как его элементы) считаться нулевым? Итак, по существу было бы верно следующее утверждение:

if (arrayList != null) 

спасибо

4b9b3361

Ответ 1

Нет.

ArrayList может быть пустым (или с нулями как элементы), а не 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;
}

Ответ 2

arrayList == null, если нет экземпляра класса ArrayList, назначенного переменной ArrayList (обратите внимание на upercase для классов и нижний регистр для переменных).

Если в любое время вы выполняете 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.

Ответ 3

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

boolean empty = true;
for (Object item : arrayList) {
    if (item != null) {
        empty = false;
        break;
    }
}

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

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

В-третьих,

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

будет печатать false.

Ответ 7

Если вы хотите проверить, содержит ли массив элементы с нулевыми значениями, используйте это:

private boolean isListOfNulls(ArrayList<String> stringList){
    for (String s: stringList)
        if( s != null) return false;
    return true;
}

Вы можете заменить <String> на соответствующий тип для ArrayList