【发布时间】:2020-08-17 08:27:36
【问题描述】:
递归添加元素到 ArrayList 时出现并发修改异常。
import java.util.*;
public class Hello {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(gss(str));
}
public static ArrayList<String> gss(String str) {
if(str.length() == 0){
ArrayList<String> list = new ArrayList<String>();
list.add("");
return list;
}
ArrayList<String> list = gss(str.substring(1));
for(String temp : list){
list.add(str.charAt(0)+temp); // Problem
}
return list;
}
}
【问题讨论】:
-
您需要通过添加
list.addAll(list.stream().map(temp -> str.charAt(0)+temp).collect(Collectors.toList()));来避免并发修改 -
您确定要向列表中添加新元素而不是修改它们吗?
-
是的。 @Amongalen
-
你能提供一个输入和预期输出的例子吗?
-
这与递归无关。您根本无法添加到您正在迭代的列表中。
标签: java recursion arraylist collections subsequence