Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接收Java错误-ArrayList$子列表无法转换为类_Java_Arraylist - Fatal编程技术网

接收Java错误-ArrayList$子列表无法转换为类

接收Java错误-ArrayList$子列表无法转换为类,java,arraylist,Java,Arraylist,我在Java程序中收到以下错误: Exception in thread "main" java.lang.ClassCastException: class java.util.ArrayList$SubList cannot be cast to class java.util.ArrayList (java.util.ArrayList$SubList and java.util.ArrayList are in module java.base of loader '

我在Java程序中收到以下错误:

Exception in thread "main" java.lang.ClassCastException: class java.util.ArrayList$SubList cannot be cast to class java.util.ArrayList (java.util.ArrayList$SubList and java.util.ArrayList are in module java.base of loader 'bootstrap')
下面是我正在使用的方法

public static ArrayList<Integer> dups(ArrayList<Integer> myList) {
        ArrayList<Integer> duplicates = new ArrayList<Integer>();

        for (int i = 0; i < myList.size(); i++) {

            ArrayList<Integer> auxiliar = new ArrayList<Integer>();
            auxiliar = (ArrayList<Integer>) myList.subList(i + 1, myList.size() - 1);

            if (auxiliar.contains(myList.get(i)) && !(duplicates.contains(myList.get(i)))) {
                duplicates.add(myList.get(i));
            }
        }
        return duplicates;
    } // End of method
公共静态ArrayList DUP(ArrayList myList){
ArrayList duplicates=新的ArrayList();
对于(int i=0;i

这可能是什么原因造成的?感谢您的帮助。

subList()
方法返回嵌套静态类的对象
ArrayList.subList
。您正试图将其强制转换为
ArrayList
,尽管它们之间没有继承关系,因此
ArrayList.Sublist
不能是
ArrayList
。例如,您可以将
列表
用作
数组列表。子列表
实现接口
列表

告诉您方法
子列表()
返回一个
列表

公共静态列表DUP(ArrayList myList){
ArrayList duplicates=新的ArrayList();
对于(int i=0;i
此外,避免使用原始类型。如果使用
ArrayList
而未声明特定类型,例如
ArrayList
,则使用的是原始类型

提示:始终建议查看文档。例如,在您的代码中
myList.subList(i+1,myList.size()-1)
您不必从
size()
中减去
1

公共列表子列表(int-fromIndex,int-toIndex)的文档编制

返回此列表中指定的fromIndex(包含)和toIndex(独占)之间部分的视图


代码在几个点上没有安全键入

我建议针对接口而不是具体类进行编程。为变量使用接口类型,并使用具体的类创建、实现它们,如下面的
duplicates

这样,您可以在以后更改实现,并编写更强大的方法。现在可以将
子列表
分配给
辅助

public static List<Integer> dups(List<Integer> myList) {
    List<Integer> duplicates = new ArrayList<>();

    for (int i = 0; i < myList.size(); i++) {
        List<Integer> auxiliar = myList.subList(i + 1, myList.size() - 1);
        if (auxiliar.contains(myList.get(i)) && !duplicates.contains(myList.get(i)))) {
            duplicates.add(myList.get(i));
        }
    }
    return duplicates;
}

“虽然他们没有继承关系”,这并不完全正确
List
ArrayList
的一个超类。是的,你是对的,我的意思是直接喜欢,所以
ArrayList。Subclass
不是
ArrayList
的子类。
public static Set<Integer> dups(List<Integer> myList) {