我正在尝试使用迭代器从LinkedList中删除数字。
我不能删除仅从变量之间的数字。

我的列表包含以下值:1、1、2、0、4、5、6、8、8、3、11、9、12、0、14、0、16]

方法的调用
removeEvenInRange(list,5,13)应删除索引5到13之间的偶数,并以包含以下内容的列表结尾
[1,1,2,0,4,5,3,11,9,0,14,0,16

我不知道如何“告诉”它仅在索引5-13之间进行迭代。对解决此问题的任何帮助将不胜感激。

这是我到目前为止所拥有的:

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;
import java.util.ListIterator;

public class Ex11_3_RemoveEvenInRange {

public static void main(String[] args) {

    List<Integer> list = new LinkedList<>();
    list.addAll(Arrays.asList(1,1,2,0,4,5,6,8,8,3,11,9,12,0,14,0,16));

    removeEvenInRange(list, 5, 13);
}

private static void removeEvenInRange(List<Integer> list, int i, int j) {


            Iterator<Integer> itr = list.iterator();

            for (int k = i; k < j; k++) {

                int element = itr.next();

                if (element % 2 == 0) {
                    itr.remove();

                }
            }


                System.out.println(list);

    }
}

最佳答案

您可以在两个索引之间subList。尝试,

static void removeEvenInRange(List<Integer> list, int i, int j){

    List<Integer> subList= list.subList(i, j);
    Iterator<Integer> itr = subList.iterator();


    while (itr.hasNext()){
        int element = itr.next();
        if (element % 2 == 0) {
            itr.remove();
        }
    }
    System.out.println(list);
}

09-25 17:01
查看更多