java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer

Uddipta_Deuri
void topologicalSortUtil(int v, boolean visited[], Stack<Integer> stack, ArrayList<Integer>[] adj) {
        visited[v] = true;
        for (int i : adj[v]) {
            if (!visited[i]) {
                topologicalSortUtil(i, visited, stack, adj);
            }
        }

        stack.push(v);
    }

Here, I am calling an array of arraylist. The error is in the enhanced for loop, as told by my IDE (IntelliJ). It seems like a perfectly valid call as adj[v] would return an ArrayList and the integer i catching each elements of the array as they come and then processing them in the recursive call.

@Alex Shesterov and others, Here is the code using which adj was generated.

    ArrayList[] arr = new ArrayList[n+1];
        for(int i=0; i<=n; i++){
            arr[i] = new ArrayList<Integer>();
        }
        arr[1].add(Arrays.asList(8,6,2));
        arr[2].add(Arrays.asList(7));
        arr[3].add(Arrays.asList(6));
        arr[4].add(Arrays.asList(5,2));
        arr[5].add(Arrays.asList(4,2,3));
        arr[6].add(Arrays.asList(3,2,5));
        arr[7].add(Arrays.asList(2));
        arr[7].add(Arrays.asList(1,2,4));
RealSkeptic

The code in which you generate the array is incorrect and type-unsafe. You are probably getting warnings about "unsafe types" or "raw types" from the compiler. The following is a use of a raw type:

ArrayList[] arr = new ArrayList[n+1];

You should never use the type ArrayList without some kind of type declaration.

You then initialize each of the elements of arr to be an ArrayList<Integer>. But since this is assigned to a raw typed array element, the compiler doesn't know that the element is an ArrayList<Integer> and doesn't warn you about your next step, which is the bad one:

arr[1].add(Arrays.asList(8,6,2));

You add an element to the list in arr[1]. The add method adds a single element, which is the object that is passed to it. And what is that object? It's a List, which is produced by Arrays.asList(...).

So instead of having an ArrayList<Integer> you have a raw ArrayList which has a single element, and that element is a list of integer. And this, of course, cannot be cast to Integer.

Instead of using add you should have used addAll. The addAll method adds all the elements in the collection it receives to the collection on which it is called.

arr[1].addAll(Arrays.asList(8,6,2));

It would have been better not to mix arrays and lists, but to pass a list of lists and give it the appropriate type.

Try to avoid raw types and eliminate all raw type or unsafe type warnings from your code (not by @SupressWarnings!), unless you start programming libraries for generic collections and you know what you are doing.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Java

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.models.Account

From Dev

java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

From Dev

deep within JUnit Parameterized test runner: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List

From Dev

java.lang.ClassCastException: java.util.Collections$UnmodifiableMap cannot be cast to Param

From Dev

Hibernate : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double

From Dev

What causes the ClassCastException: java.util.TreeSet cannot be cast to java.lang.Comparable?

From Dev

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast

From Dev

How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

From Dev

java.lang.ClassCastException: cannot be cast to java.lang.Object

From Dev

How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to double[]

From Dev

serverError: class java.lang.ClassCastException java.lang.Integer cannot be cast to java.lang.String

From Dev

java.lang.ClassCastException: java.util.HashMap$EntrySet cannot be cast to java.util.Map$Entry

From Dev

SDN4: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to [EntityNode]

From Dev

SDN4 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long when using AttributeConverter

From Dev

java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String

From Dev

UISelectMany in ui:repeat causes java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List

From Dev

java.lang.ClassCastException: java.util.HashSet cannot be cast to Custom Class

From Dev

java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer in DAO

From Dev

java.lang.Integer cannot be cast to java.lang.Long

From Dev

java.lang.ClassCastException: java.util.Collections$UnmodifiableMap cannot be cast to Param

From Dev

Hibernate HQL casting java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

From Dev

How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

From Dev

java.lang.Integer cannot be cast to java.lang.String

From Dev

SDN4 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long when using AttributeConverter

From Dev

Android HashMap java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Map$Entry

From Dev

java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String when using Univocity

From Dev

java.lang.ClassCastException:[I cannot be cast to java.lang.Integer

From Dev

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer in tableau?

From Dev

Class cast Exception: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long

Related Related

  1. 1

    java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.testing.models.Account

  2. 2

    java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

  3. 3

    deep within JUnit Parameterized test runner: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List

  4. 4

    java.lang.ClassCastException: java.util.Collections$UnmodifiableMap cannot be cast to Param

  5. 5

    Hibernate : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double

  6. 6

    What causes the ClassCastException: java.util.TreeSet cannot be cast to java.lang.Comparable?

  7. 7

    java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast

  8. 8

    How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

  9. 9

    java.lang.ClassCastException: cannot be cast to java.lang.Object

  10. 10

    How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to double[]

  11. 11

    serverError: class java.lang.ClassCastException java.lang.Integer cannot be cast to java.lang.String

  12. 12

    java.lang.ClassCastException: java.util.HashMap$EntrySet cannot be cast to java.util.Map$Entry

  13. 13

    SDN4: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to [EntityNode]

  14. 14

    SDN4 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long when using AttributeConverter

  15. 15

    java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String

  16. 16

    UISelectMany in ui:repeat causes java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List

  17. 17

    java.lang.ClassCastException: java.util.HashSet cannot be cast to Custom Class

  18. 18

    java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer in DAO

  19. 19

    java.lang.Integer cannot be cast to java.lang.Long

  20. 20

    java.lang.ClassCastException: java.util.Collections$UnmodifiableMap cannot be cast to Param

  21. 21

    Hibernate HQL casting java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

  22. 22

    How to fix: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Integer

  23. 23

    java.lang.Integer cannot be cast to java.lang.String

  24. 24

    SDN4 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long when using AttributeConverter

  25. 25

    Android HashMap java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Map$Entry

  26. 26

    java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String when using Univocity

  27. 27

    java.lang.ClassCastException:[I cannot be cast to java.lang.Integer

  28. 28

    java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer in tableau?

  29. 29

    Class cast Exception: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long

HotTag

Archive