ログのリストに対してイテレータを使用してリストを反復処理しようとしています。目標は、新しいログと同じ電話番号、タイプ、日付を含むログを検索することです
ただし、条件ステートメントでJava.util.NoSuchElementExceptionを受け取ります。誰が問題の原因を知っていますか?
私のコード
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);
}
}
1回の反復でnext()
を何度も呼び出して、Iterator
を存在しない要素に強制的に移動させています。
の代わりに
_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());
...
_
Iterator#next()
を呼び出すたびに、基になるカーソルが前方に移動します。