我正在尝试将整数值插入到列表中。一旦插入了值,我将检查当前值和下一个值之间是否有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());
}
我无法使其正常工作的两件事。
首先,当我尝试将差值添加回列表时,它不会添加到正确的索引中。例如,First值为20,第二个值为40,新值30在40之后添加
其次,70&amp;之间的缺失值。这里没有创建90这是80。
请理解我在这里缺少的逻辑。
谢谢你的时间。答案 0 :(得分:0)
问题是当您发现两个元素之间的差异超过10且插入时,而不是调用iterator.previous();
而是调用iterator.previousIndex();
答案 1 :(得分:0)
previousIndex()
的Javadoc:
返回后续调用
previous()
将返回的元素的索引。 (如果列表迭代器位于列表的开头,则返回-1。)
它不会以任何方式改变迭代器位置。
使用previous()
:
返回列表中的上一个元素并向后移动光标位置。可以重复调用此方法以向后遍历列表,或者与对
next()
的调用混合以来回传递。 (请注意,对next
和previous
的交替调用将重复返回相同的元素。)