我使用 ArrayList 并尝试将其一部分复制到另一个 ArrayList 因此我使用:
sibling.keys = (ArrayList<Integer>) keys.subList(mid, this.num);
其中“sibling.keys”是新的ArrayList,“keys or this.keys”是旧的ArrayList。
我使用了铸造,因为 Eclipse 告诉我这样做,但随后它抛出了一个ClassCastException
:
java.util.ArrayList$SubList 无法转换为 java.util.ArrayList
有什么建议吗?
subList
返回一个view在现有列表上。这不是一个ArrayList
。您可以创建一个copy of it:
sibling.keys = new ArrayList<Integer>(keys.subList(mid, this.num));
或者,如果您对视图行为感到满意,请尝试更改sibling.keys
就只是List<Integer>
代替ArrayList<Integer>
,这样您就不需要复制:
sibling.keys = keys.subList(mid, this.num);
但重要的是你要理解其中的差异——你会变异吗?sibling.keys
(例如,为其添加值或更改现有元素)?你要变异吗keys
?您是否希望一个列表的突变影响另一个列表?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)