以下代码抛出ConcurrentModificationException:
for (String word : choices) {
List<String> choicesCopy = choices;
chosen.add(word);
choicesCopy.remove(word);
subsets(choicesCopy, chosen, alreadyPrinted);
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?原始列表(选项)根本没有修改.
您在此处制作了参考副本而非对象副本
List<String> choicesCopy = choices;
Run Code Online (Sandbox Code Playgroud)
显然你正在修改相同的列表,你一定会得到 ConcurrentModificationException
使用Collections.copy()正确制作列表的副本.
编辑: 如下所示,您也可以使用构造函数进行复制.
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |