gpt4 book ai didi

java - 代码运行但给我 java.util.Arrays$ArrayList 无法转换为 java.util.ArrayList

转载 作者:行者123 更新时间:2023-12-01 18:19:47 26 4
gpt4 key购买 nike

我正在编写有关 ArrayList 的 Java 初学者教程,要求我执行以下操作

// Create a method called removeOdd
// Remove all the odd numbers from an ArrayList

// removeOdd(Arrays.asList(1,2,3,5,8,13,21)) => {2, 8}
// removeOdd(Arrays.asList(7,34,2,3,4,62,3)) => {34, 2, 4, 62}

下面是我的代码

import java.util.ArrayList;
import java.util.Arrays;


public class Ex4_RemoveOdd {

public static void main(String[] args) {

removeOdd((ArrayList<Integer>) Arrays.asList(1,2,3,5,8,13,21));
removeOdd((ArrayList<Integer>) Arrays.asList(7,34,2,3,4,62,3));
}

public static void removeOdd(ArrayList<Integer> list){
for (int i = 0; i < list.size(); i++){
int num = list.get(i);
if (num % 2 != 0){
list.remove(i);
}
}
System.out.println(list);
}
}

代码运行,但给出了以下错误代码

Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

有人知道我做错了什么吗?

我知道还有另一个similar question就这样

但是我认为我们的情况有所不同,因为 OP 没有像我一样使用 AsList 在方法中声明列表。

非常感谢您的宝贵时间:)

最佳答案

方法Arrays.asList returns a List ,但它不是 java.util.ArrayList。它是一个 private 嵌套类 ArrayList,嵌套在 Arrays 中,而且它是不同的。不支持添加或删除生成的列表。

要创建实际的 java.util.ArrayList,请将 List 传递到正确的 ArrayList constructor ,需要一个 Collection,例如

removeOdd(new ArrayList<Integer>(Arrays.asList(1, 2, 3, 5, 8, 13, 21)));

至于为什么内部类被称为java.util.Arrays$ArrayList,那是因为美元符号$将封闭类名与嵌套类名。

关于java - 代码运行但给我 java.util.Arrays$ArrayList 无法转换为 java.util.ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com