yoa*_*ray 35 java arraylist sublist
我使用ArrayList并尝试将其一部分复制到另一个ArrayList,因此我使用:
sibling.keys = (ArrayList<Integer>) keys.subList(mid, this.num);
Run Code Online (Sandbox Code Playgroud)
其中"sibling.keys"是新的ArrayList,"keys或this.keys"是旧的ArrayList.我使用了铸造,因为eclipse告诉我这样做但是它抛出了ClassCastException:
java.util.ArrayList $ SubList无法强制转换为java.util.ArrayList
有什么建议?
Jon*_*eet 87
subList返回现有列表的视图.这不是一个ArrayList.您可以创建它的副本:
sibling.keys = new ArrayList<Integer>(keys.subList(mid, this.num));
Run Code Online (Sandbox Code Playgroud)
或者,如果您对视图行为感到满意,请尝试将类型更改sibling.keys为仅List<Integer>代替ArrayList<Integer>,以便您不需要复制:
sibling.keys = keys.subList(mid, this.num);
Run Code Online (Sandbox Code Playgroud)
重要的是你要了解它们的区别 - 你是否会改变sibling.keys(例如为其添加值或更改现有元素)?你要改变keys吗?你想要一个列表的变异影响另一个吗?