java.lang.ClassCastException:-Arrays.asList()
线程“main”java.lang.ClassCastException中的异常: 无法将java.util.Arrays$ArrayList转换为BinarySearch.main(BinarySearch.java:14)中的java.util.ArrayList 下面是我的代码-java.lang.ClassCastException:-Arrays.asList(),java,arrays,collections,classcastexception,Java,Arrays,Collections,Classcastexception,线程“main”java.lang.ClassCastException中的异常: 无法将java.util.Arrays$ArrayList转换为BinarySearch.main(BinarySearch.java:14)中的java.util.ArrayList 下面是我的代码- import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class BinarySearch{
public static void main(String s[]) throws InterruptedException{
int result=-1;
Integer[] array ={34,67,12,32,07,11,25} ;
ArrayList<Integer> list=new ArrayList<Integer>();
list=(ArrayList<Integer>) Arrays.asList(array);
for(Integer i:list)
System.out.println(i);
Collections.sort(list);
for(Integer i:list)
System.out.println(i);
int search=new Scanner(System.in).nextInt();
int low=0;
int max=list.size()-1;
int middle=(low+max)/2;
System.out.println(low+" - "+middle+" - "+max );
while(low<=max){
if(list.get(middle)== search){
result=middle;
break;
}else if(list.get(middle)> search){
max=middle-1;
}else{
low=middle+1;
}
middle=(low+max)/2;
System.out.println(low+" - "+middle+" - "+max );
Thread.currentThread().sleep(1000);
}
if(result==-1)
System.out.println("not Found!");
else System.out.println("Element "+search+" found at position- "+result);
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.Collections;
导入java.util.List;
导入java.util.Scanner;
公共类二进制搜索{
公共静态void main(字符串s[])引发InterruptedException{
int结果=-1;
整数[]数组={34,67,12,32,07,11,25};
ArrayList=新建ArrayList();
list=(ArrayList)数组;
for(整数i:列表)
系统输出打印LN(i);
集合。排序(列表);
for(整数i:列表)
系统输出打印LN(i);
int search=新扫描仪(System.in).nextInt();
int低=0;
int max=list.size()-1;
中间整数=(低+最大)/2;
系统输出打印项数(低+“-”+中+“-”+最大值);
while(低搜索){
max=middle-1;
}否则{
低=中+1;
}
中间=(低+最大)/2;
系统输出打印项数(低+“-”+中+“-”+最大值);
Thread.currentThread().sleep(1000);
}
如果(结果==-1)
System.out.println(“未找到!”);
else System.out.println(“元素”+搜索+”位于位置-“+结果);
}
}
如果我探究上述问题-
List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(array));
List<Integer> list2 = Arrays.asList(array);
List<Integer> list3 = new ArrayList<Integer>(list2);
List list1=newarraylist(Arrays.asList(array));
List list2=Arrays.asList(array);
List list3=新阵列列表(list2);
我说得对吗
列表1和列表3有行为,而列表2是不可变的。返回的
列表
不是a,因此如果您尝试将其强制转换为ArrayList
,您会得到一个ClassCastException
,就像您在这里所做的那样:
list=(ArrayList<Integer>) Arrays.asList(array);
返回的
列表
不是,因此如果您尝试将其强制转换为ArrayList
,则会得到一个ClassCastException,如下所示:
list=(ArrayList<Integer>) Arrays.asList(array);
返回列表
,而不是数组列表
更改:
ArrayList<Integer> list = new ArrayList<Integer>();
list = (ArrayList<Integer>) Arrays.asList(array);
ArrayList list=new ArrayList();
list=(ArrayList)数组;
到
List List=Arrays.asList(array);
返回列表
,而不是数组列表
更改:
ArrayList<Integer> list = new ArrayList<Integer>();
list = (ArrayList<Integer>) Arrays.asList(array);
ArrayList list=new ArrayList();
list=(ArrayList)数组;
到
List List=Arrays.asList(array);
Arrays.asList
不返回java.util.ArrayList
使用列表
界面而不是特定的实现:
List<Integer> list = Arrays.asList(array);
Arrays.asList
不返回java.util.ArrayList
使用列表
界面而不是特定的实现:
List<Integer> list = Arrays.asList(array);
我建议不要创建ArrayList
,因为它是一个浪费的实例化。为什么在第二个示例中创建一个空的ArrayList?我建议不要创建ArrayList
,因为它是一个浪费的实例化。为什么在第二个示例中创建一个空的ArrayList?