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?
ArrayList
的 subList
方法 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));
我正在尝试将 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?
ArrayList
的 subList
方法 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));