問(wèn)題描述
我正在嘗試使用迭代器對(duì)我的日志列表進(jìn)行迭代.目標(biāo)是搜索包含與新日志相同的電話號(hào)碼、類型和日期的日志
I'm trying to iterate through a list using the iterator over my list of Logs. The goal is to search for a logs which contains the same phonenumber, type and date as the new log
但是,我的條件語(yǔ)句中出現(xiàn) java.util.NoSuchElementException.有誰(shuí)知道可能導(dǎo)致問(wèn)題的原因?
However, I get a java.util.NoSuchElementException in my conditional statement. Does anyone know what might cause the problem?
我的代碼
public void addLog(String phonenumber, String type, long date, int incoming, int outgoing)
{
//Check if log exists or else create it.
Log newLog = new Log(phonenumber, type, date, incoming, outgoing);
//Log exists
Boolean notExist = false;
//Iterator loop
Iterator<Log> iterator = logs.iterator();
while (iterator.hasNext())
{
//This is where get the exception
if (iterator.next().getPhonenumber() == phonenumber && iterator.next().getType() == type && iterator.next().getDate() == date)
{
updateLog(newLog, iterator.next().getId());
}
else
{
notExist = true;
}
}
if (notExist)
{
logs.add(newLog);
}
}
推薦答案
你在一次迭代中多次調(diào)用 next()
迫使 Iterator
移動(dòng)到一個(gè)不存在的元素.
You are calling next()
a bunch of times in one iteration forcing the Iterator
to move to an element that doesn't exist.
代替
if (iterator.next().getPhonenumber() == phonenumber && iterator.next().getType() == type && iterator.next().getDate() == date)
{
updateLog(newLog, iterator.next().getId());
...
使用
Log log = iterator.next();
if (log.getPhonenumber() == phonenumber && log.getType() == type && log.getDate() == date)
{
updateLog(newLog, log .getId());
...
每次調(diào)用 Iterator#next()
時(shí),它都會(huì)向前移動(dòng)底層光標(biāo).
Every time you call Iterator#next()
, it moves the underlying cursor forward.
這篇關(guān)于java.util.NoSuchElementException 在 java 中使用迭代器的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!