Как проверить, есть ли (Object) в Java?

Вопрос: У меня есть код в Java: for(Iterator it = c.getArrayList().iterator(); it.hasNext(); ) { Object i = it.next(); // Here I have an error, i is not a boolean if (i) { System.out.format("Delete %s%n", i); it.remove(); } else { System.out.println("End"); break; } } Но предложение if вызывает ошибку. Он ожидает boolean но Object задан. Java

Вопрос:

У меня есть код в Java:

for(Iterator it = c.getArrayList().iterator(); it.hasNext(); ) { Object i = it.next(); // Here I have an error, i is not a boolean if (i) { System.out.format(«Delete %s%n», i); it.remove(); } else { System.out.println(«End»); break; } }

Но предложение if вызывает ошибку. Он ожидает boolean но Object задан. Java не может преобразовывать типы, не так ли?

Как мне изменить тип или что мне нужно включить в предложение if, чтобы он работал правильно?

UPD:

Это коллекция (ArrayList) строк.

Object i = it.next(); // I get one element from collection. if (i) { // check if it not the end, if it not the last element of the collection Лучший ответ:

Вы пытаетесь проверить, является ли оно нулевым?

if (i != null) { System.out.format(«Delete %s%n», i); it.remove(); } else { System.out.println(«End»); break; }

Если вы проверяете логическое значение i а ArrayList – это List<Boolean>, тогда вы можете использовать Iterator<Boolean> it, но вам все равно нужно быть осторожным с исключениями из null-указателей.

Edit: Если вы хотите напечатать End когда все ненулевые строки удалены, вы можете удалить блок else и просто распечатать End после цикла for.

Ответ №1

Luckly Iterator имеет функцию hasNext().

Таким образом, вы будете использовать:

Object i = null; if(it.hasNext()){ i = it.next(); }else{ //done. } //Do stuff with i. Ответ №2

Неясно, что вы хотите проверить.

Если вы хотите проверить, присутствует ли объект, проверьте значение null:

if (i==null)

Если вы хотите проверить какое-либо свойство, то переведите его в определенный тип

if(((MyClass)i).iDontWantLoLive())

Если объекты имеют значение boolean, то для boolean:

if((Boolean)i) Ответ №3

Java – это строго типизированный язык. Если вы хотите/ожидаете логические значения, тогда сделайте что-то вроде этого…

List<Boolean> list = new ArrayList<Boolean>(); for (Iterator<Boolean> it = list.iterator(); it.hasNext(); ) { boolean i = it.next(); if (i) { System.out.format(«Delete %s%n», i); it.remove(); } else { System.out.println(«End»); break; } }

В противном случае, если вы просто пытаетесь удалить что-то на основании этого значения null, то (‘if (i == null)’, как предложили другие).

Ответ №4

Ваш вывод “End” предполагает, что вы хотите сделать это в конце. Вы можете сделать это вместо этого.

List list = c.getArrayList(); for(Object o: list) System.out.println(«Delete » + o); list.clear(); System.out.println(«End»);

Примечание: format просто возвращает строку, которую вы отбрасываете.

Ответ №5

Это очень медленный способ удалить последний элемент списка. Вместо этого используйте

list.remove(list.size() — 1); Ответ №6

Да, Java не будет автоматически принуждать типы. Вам придется вручную перевести Object в Boolean.

Ответ №7

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

list.remove(list.size() — 1);

Ссылка

Оцените статью
Добавить комментарий