Java 从ArrayList中删除奇数元素

Java 从ArrayList中删除奇数元素,java,arraylist,Java,Arraylist,如果您使用的是Java 8,则只需使用: 完整方法应如下所示: list.removeIf(i -> i % 2 != 0); List<Integer> list = Arrays.asList(3, 5, 6, 24, 7, 9, 1, 8, 28, 11); List<Integer> result = removeOddNumbers(numbers); System.out.println(result); lambda路: [2, 6, 4] N

如果您使用的是Java 8,则只需使用:


完整方法应如下所示:

list.removeIf(i -> i % 2 != 0);
List<Integer> list = Arrays.asList(3, 5, 6, 24, 7, 9, 1, 8, 28, 11);
List<Integer> result = removeOddNumbers(numbers);
System.out.println(result);
lambda路:

[2, 6, 4]

N.B由@YCF\u L发布的方法编辑您通过参数传递的列表,而我的方法创建一个新列表,保持原始列表不变

您应该使用迭代器从列表中删除项目。这将节省存储奇数元素的临时列表的使用

ArrayList<Integer> arrayList = new ArrayList<Integer>();
Collections.addAll(arrayList, 3, 5, 6, 24, 7, 9, 1, 8, 28, 11);
List<Integer> result = removeOddNumbers(arrayList);
System.out.println(result);
// you can use Iterator.remove()
List arr = new ArrayList();
        arr .add(10);
        arr .add(20);
        arr .add(30);
        arr .add(1);
        arr .add(2);

        // Remove odd elements
        // Iterator.remove()
        Iterator itr = arr .iterator();
        while (itr.hasNext())
        {
            int x = (Integer)itr.next();
            if (x % 2 != 0)
                itr.remove();
        } 
        System.out.println("Modified ArrayList : "                                     + arr);
公共静态列表removeOddNumber(列表arrayList){
迭代器itr=arrayList.Iterator();
while(itr.hasNext())
{
int x=(整数)itr.next();
如果(x%2!=0){
itr.remove();
}
} 
返回数组列表;
}


您可以使用Java8编写更简单的代码。

您会遇到什么错误?您可以使用另一个列表来存储要保留的元素或向后迭代。是否可以在调用
removeOddNumbers
的位置添加代码?看:。我在哪里用这个?你是什么意思?我在哪里用这个?我想他还有另一个问题。代码应该主要有效-即使这不是最简单的方法。在List@qwert123上获取找不到符号错误,请使用
List
而不是
ArrayList
,检查我的编辑器。获取列表上的“找不到”符号错误为well@qwert123发布完整的类,这可能是一个语法错误没有给出一个类,但发布了test@qwert123固定的
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 6, 5, 4));
list.removeIf(i -> i % 2 != 0);
System.out.println(removeOddNumbers(list));
[2, 6, 4]
public static List<Integer> filter(List<Integer> numberList) {
    return numberList.stream()
        .filter(number -> number % 2 != 0)
        .collect(Collectors.toList());
}
List<Integer> list = Arrays.asList(3, 5, 6, 24, 7, 9, 1, 8, 28, 11);
List<Integer> result = removeOddNumbers(numbers);
System.out.println(result);
ArrayList<Integer> arrayList = new ArrayList<Integer>();
Collections.addAll(arrayList, 3, 5, 6, 24, 7, 9, 1, 8, 28, 11);
List<Integer> result = removeOddNumbers(arrayList);
System.out.println(result);
// you can use Iterator.remove()
List arr = new ArrayList();
        arr .add(10);
        arr .add(20);
        arr .add(30);
        arr .add(1);
        arr .add(2);

        // Remove odd elements
        // Iterator.remove()
        Iterator itr = arr .iterator();
        while (itr.hasNext())
        {
            int x = (Integer)itr.next();
            if (x % 2 != 0)
                itr.remove();
        } 
        System.out.println("Modified ArrayList : "                                     + arr);
public static List<Integer> removeOddNumbers(List<Integer> arrayList) {
    Iterator<Integer> itr = arrayList .iterator();
    while (itr.hasNext())
    {
        int x = (Integer)itr.next();
        if (x % 2 != 0) {
            itr.remove();
        }
    } 
    return arrayList;
}