Im using an ArrayList and im trying to copy a part of it to another ArrayList therefore im using:
sibling.keys = (ArrayList<Integer>) keys.subList(mid, this.num);
Where "sibling.keys" is the new ArrayList and "keys or this.keys" is the older ArrayList. I used the casting because eclipse told me to do that but then it throws a ClassCastException
:
java.util.ArrayList$SubList cannot be cast to java.util.ArrayList
Any advice?
The subList() method of java. util. ArrayList class is used to return a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive. (If fromIndex and toIndex are equal, the returned list is empty.)
subList is a method in the List interface that lets you create a new list from a portion of an existing list. However, this newly created list is only a view with a reference to the original list.
subList() Method Parameters. fromIndex – start index in existing arraylist. It is inclusive.
subList
returns a view on an existing list. It's not an ArrayList
. You can create a copy of it:
sibling.keys = new ArrayList<Integer>(keys.subList(mid, this.num));
Or if you're happy with the view behaviour, try to change the type of sibling.keys
to just be List<Integer>
instead of ArrayList<Integer>
, so that you don't need to make the copy:
sibling.keys = keys.subList(mid, this.num);
It's important that you understand the difference though - are you going to mutate sibling.keys
(e.g. adding values to it or changing existing elements)? Are you going to mutate keys
? Do you want mutation of one list to affect the other?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With