java.lang.ClassCastException: - Arrays.asList()

java.lang.ClassCastException: - Arrays.asList()

Exception in thread "main" java.lang.ClassCastException:

java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList at BinarySearch.main(BinarySearch.java:14)

下面是我的代码-

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);

    }

}

如果我探索上面的问题-

List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(array)); 
List<Integer> list2 = Arrays.asList(array);
List<Integer> list3 = new ArrayList<Integer>(list2);

我说得对吗?

list1 和 list3 有行为,而 list2 是不可变的。

ListArrays.asList(...) is not a java.util.ArrayList 返回,因此如果您尝试将其转换为 ArrayList,您会得到 ClassCastException,就像您在此处所做的那样:

list=(ArrayList<Integer>) Arrays.asList(array);

解决方案:不要将其转换为 ArrayList。请改用 List 界面。

List<Integer> list = Arrays.asList(array);

Arrays.asList() returns List,不是 ArrayList.

变化:

ArrayList<Integer> list = new ArrayList<Integer>();
list = (ArrayList<Integer>) Arrays.asList(array);

List<Integer> list = Arrays.asList(array);

Arrays.asList 不 return java.util.ArrayList.

使用 List 接口而不是特定的实现:

       List<Integer> list = Arrays.asList(array);

或者创建一个 java.util.ArrayList 实例并将由 Arrays.asList 编辑的 List return 传递给它的构造函数:

       ArrayList<Integer> list = new ArrayList<Integer> (Arrays.asList(array));