列表中的问题如下:迭代在Java中
编写一个使用递归回溯找到一个给定列表的每一个可能的子列表中的静态方法的子集。列表L的子列表包含0个或更多的元素。您的方法应该接受一个字符串列表作为其参数,并打印每个可以从该列表的元素创建的子列表,每行一个。例如,假设名为list的变量存储以下元素:
[Janet, Robert, Morgan, Char]
子集(列表)的调用;将产生出诸如下列:
[Janet, Robert, Morgan, Char]
[Janet, Robert, Morgan]
[Janet, Robert, Char]
[Janet, Robert]
[Janet, Morgan, Char]
[Janet, Morgan]
[Janet, Char]
[Janet]
[Robert, Morgan, Char]
[Robert, Morgan]
[Robert, Char]
[Robert]
[Morgan, Char]
[Morgan]
[Char]
[]
我的解决方案的一部分使用递归回溯来电:
ListIterator<String> itr = choices.listIterator();
while (itr.hasNext()) {
String word = itr.next();
chosen.add(word);
itr.remove();
subsets(choices, chosen, alreadyPrinted);
chosen.remove(word);
itr.add(word);
}
但我得到有itr.add行(字)的ConcurrentModificationException的。为什么?我认为ListIterator的整个目的是为了避免这个问题?
编辑:我也想解决这样的:
for (String word : choices) {
List<String> choicesCopy = choices;
chosen.add(word);
choicesCopy.remove(word);
subsets(choicesCopy, chosen, alreadyPrinted);
}
我仍然得到一个ConcurrentModificationException的....:?( 怎么会出现这种情况有没有原始列表的修改的所有.. 。
这个功课? – Casey 2011-05-27 00:54:16