我有一个程序,我需要从数组列表中删除值,如果值小于10,则删除后面的值。
下面是一个例子:
原始数组列表:
[20,40,15,4,25,50,45]
Modified ArrayList:(如果value小于10)
[20, 40, 15, 50, 45] -(删除4和25,因为4小于10)
我已经编写了一个程序,可以删除小于10的值,但是我不知道如何删除第二个值。
我已经尝试创建一个变量布尔重启,设置为true,如果for-each循环删除的值小于10。但是我被卡住了。
下面是我的代码:Scanner sc = new Scanner(System.in);
int numberOfMeasurements = sc.nextInt();
boolean restart = false;
ArrayList<Integer> measurements = new ArrayList<Integer>();
for(int i = 0; i < numberOfMeasurements; i++) {
measurements.add(sc.nextInt());
}
ArrayList<Integer> measurementsTwo = new ArrayList<>();
for (int i : measurements) {
if (i > 10) {
measurementsTwo.add(i);
restart = true;
}
}
measurements = measurementsTwo;
System.out.println(measurements);
如果描述不准确,请直接说出来,我会尽力澄清我的问题。
一个好的旧迭代器应该做:
for (Iterator<Integer> it = measurements.iterator(); it.hasNext();) {
if (it.next() < 10) {
it.remove();
if (it.hasNext()) { // ensures no failure if `it` was at last element
it.next();
it.remove();
}
}
}