【问题标题】:List iterator to add the missing value back to the list列表迭代器将缺失值添加回列表
【发布时间】:2018-05-05 08:22:04
【问题描述】:

我正在尝试将整数值插入到列表中。插入值后,我将检查当前值和下一个值之间是否相差 10。如果是,我将在第一个值上加 10并将其添加回列表。

public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(20);
        arrayList.add(40);
        arrayList.add(50);
        arrayList.add(70);
        arrayList.add(90);

        ListIterator<Integer> iterator = arrayList.listIterator();
        int firstVal = 0;
        int secVal = 0;
        while (iterator.hasNext()) {
            if (iterator.hasPrevious()) {
                firstVal = iterator.previous();
                iterator.next();
            }

            secVal = iterator.next();
            System.out.println("FirstValue " + firstVal);
            System.out.println("secVal " + secVal);
            if (firstVal != 0) {
                if ((secVal - firstVal) > 10) {
                    //iterator.previousIndex();
                    iterator.add(firstVal + 10);
                    firstVal = 0;
                    iterator.next();
                }
            }
        }
        System.out.println("iterator " + iterator.toString());

    }

有两件事我无法使其正常工作。

首先,当我尝试将差异值添加回列表时,它没有添加到正确的索引中。例如,第一个值为 20,第二个值为 40,新值 30 在 40 之后添加.

其次,这里没有创建 70 和 90 之间的缺失值,即 80。

请纠正我在这里遗漏的逻辑。

感谢您的宝贵时间。

【问题讨论】:

  • 您希望previousIndex() 做什么?阅读该方法的 Javadoc,看看它是否符合您的预期。
  • @tgdavies 实际上它对我的情况没有任何作用,现在就发表了评论。感谢您的突出显示。
  • 您不应将其注释掉。您需要致电previous()
  • @tgdavies 非常感谢。您强调了问题所在。
  • @user7 在我的实际代码中修改为 previous() ..谢谢

标签: java arraylist listiterator


【解决方案1】:

previousIndex()的Javadoc:

返回后续调用previous() 时将返回的元素的索引。 (如果列表迭代器位于列表的开头,则返回 -1。)

它不会以任何方式改变迭代器的位置。

为此使用previous()

返回列表中的前一个元素并向后移动光标位置。可以重复调用此方法以向后迭代列表,或与调用next() 混合以来回移动。 (注意交替调用nextprevious 将重复返回相同的元素。)

【讨论】:

  • @Andreas,非常感谢您的详细解释。它解决了这个问题。太棒了。
【解决方案2】:

问题是当您发现两个元素之间的差异大于 10 时,当您插入时,不是调用iterator.previous();,而是调用iterator.previousIndex();

【讨论】:

  • 哇,谢谢。它实际上解决了这两个问题。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2018-02-22
  • 2014-09-06
  • 2012-10-11
  • 2014-07-03
  • 2015-06-24
  • 2015-05-16
相关资源
最近更新 更多