接收Java错误-ArrayList$子列表无法转换为类
我在Java程序中收到以下错误:接收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 '
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) {