List.sublist(n,m)的视图是什么?

时间:2015-07-10 03:45:57

标签: java arraylist java-8 classcastexception

我试图将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返回?

1 个答案:

答案 0 :(得分:3)

ArrayList&#39; subList方法返回ArrayList内部类SubListprivate class SubList extends AbstractList<E> implements RandomAccess)的实例,而不是{{} 1}}。您可以将其存储在ArrayList变量中,但无法将其转换为List

如果您希望子列表是一个独立的ArrayList,您可以创建一个新的ArrayList:

ArrayList