通过迭代器将当前对象的值复制到下一个对象

时间:2016-04-10 03:11:00

标签: java iterator

如果我有LinkedQueue,有没有办法可以将当前对象的值设置为下一个对象,下一个对象'值到下一个对象......直到最后一个元素?

以下代码似乎无法解决此问题。

LinkedDeque<Example> queue = new LinkedDeque<Example>();

Iterator<Example> iterator = queue.iterator();
while (iterator.hasNext())
{
    Example ex = iterator.next();
    int x = ex.getX();
    int y = ex.getY();
    Example exNext = iterator.next();
    exNext.set(x);
    exNext.set(Y);
}

1 个答案:

答案 0 :(得分:1)

每次调用iterator.next()时,迭代器索引都会递增,因此您将一次在列表中移动两个对象。

尝试引入一个前一个变量,这样你只需每次迭代while循环调用iterator.next(),如下所示:

LinkedDeque<Example> queue = new LinkedDeque<Example>();

Iterator<Example> iterator = queue.iterator();
if(iterator.hasNext()) {
  Example prev = iterator.next();

  while (iterator.hasNext())
  {
      int x = prev.getX();
      int y = prev.getY();
      Example exNext = iterator.next();
      exNext.set(x);
      exNext.set(Y);
      prev = exNext;
  }
}