Я использую LinkedList
и извлекаю объект Iterator
с помощью list.iterator()
. После этого я проверяю it.hasNext()
, реальная проблема при проверке it.hasNext()
, иногда она возвращает false
. Мне нужна помощь, почему это происходит, хотя у меня есть элементы в списке.Итератор Java LinkedList досрочно исчерпан
Некоторый код:
public synchronized void check(Object obj) throws Exception {
Iterator itr = list.iterator();
while(itr.hasNext()) { //This Line I get false.. though i have list size is 1
Item p = (Item)itr.next();
if(p.getId() == null) {continue;}
if(p.getId().getElemntId() == obj.getId() || obj.getId() == 0) {
p.setResponse(obj);
notifyAll();
return;
}
}
Log.Error("validate failed obj.getId="+obj.getId()+" **list.size="+list.size()*This shows 1*);
throw new Exception("InvalidData");
}
Если it.hasNext() == ложь, это означает, что ваш список пуст. Для более полного ответа нам нужно увидеть некоторый код ... – Guillaume
@Sujeet попробуйте отладить путем печати list.size() - маловероятно, что итератор вернет false, даже если в списке есть элементы (если он правильно закодирован) – Nishant
Это многопоточное приложение. Не могу предоставить полный код :(Мне нужна помощь, например, если у вас возник такой вопрос. Есть ли какой-либо сценарий, когда it.hasNext() возвращает false, хотя список не пуст. – Sujeet