我试图将ArrayList<String>
分成两半。
ArrayList<String> in = new ArrayList<>(), out1, out2;
out1 = (ArrayList<String>) in.subList(0,2); //will cause an ClassCastException: List cannot be casted to ArrayList
out2 = (ArrayList<String>) in.subList(2,5); // either here
为什么呢?什么是表示的视图,哪个subList返回?
答案 0 :(得分:3)
ArrayList
&#39; subList
方法返回ArrayList
内部类SubList
(private class SubList extends AbstractList<E> implements RandomAccess
)的实例,而不是{{} 1}}。您可以将其存储在ArrayList
变量中,但无法将其转换为List
。
如果您希望子列表是一个独立的ArrayList,您可以创建一个新的ArrayList:
ArrayList