List.sublist(n,m)的观点是什么?

What is the view of List.sublist(n,m)?

我正在尝试将 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

为什么?视图代表什么,哪个子列表 returns?

ArrayListsubList 方法 returns ArrayList 的内部 class 实例调用 SubList (private class SubList extends AbstractList<E> implements RandomAccess), 而不是 ArrayList。您可以将其存储在 List 变量中,但不能将其转换为 ArrayList.

如果你想让你的子列表成为一个独立的ArrayList,你可以创建一个新的ArrayList :

out1 = new ArrayList<String> (in.subList(0,2)); 
out2 = new ArrayList<String> (in.subList(2,5));