Java 类型ArrayList中的方法add(ArrayList)不适用于参数(void)
我试图解决一个问题,得到子集S=[1,2,3]的所有集合。 我用递归来解决这个问题。我正在尝试创建一个空的ArrayList,其中包含一个基格中的空列表。在制作自己的ans时,上面提到的编译时错误 我已经尝试了eclipse建议addAll,但仍然得到了错误Java 类型ArrayList中的方法add(ArrayList)不适用于参数(void),java,arraylist,Java,Arraylist,我试图解决一个问题,得到子集S=[1,2,3]的所有集合。 我用递归来解决这个问题。我正在尝试创建一个空的ArrayList,其中包含一个基格中的空列表。在制作自己的ans时,上面提到的编译时错误 我已经尝试了eclipse建议addAll,但仍然得到了错误 public static ArrayList<ArrayList<Integer>> relatedSubSets(ArrayList<Integer> A, int index){ if(in
public static ArrayList<ArrayList<Integer>> relatedSubSets(ArrayList<Integer> A, int index){
if(index == A.size()){
ArrayList<ArrayList<Integer>> br=new ArrayList<ArrayList<Integer>();
ArrayList<Integer> emptyList=new ArrayList<Integer>();
br.add(emptyList); //Making an arraylist containing empty list
return br;``
}
ArrayList<ArrayList<Integer>> rr=relatedSubSets(A,index+1); // Getting the recursion result in it.
ArrayList<ArrayList<Integer>> mr=new ArrayList<>();
for(int i=0;i<rr.size();i++){
ArrayList<Integer> ans=rr.get(i);
mr.add(ans);
mr.add(ans.add(0,A.get(index))); //Error in this line of the code
}
System.out.println(mr);
return mr;
}
预期输出为所有子集。获取编译时错误,但是。编译器在检测错误方面做得非常好: 您错过了额外的>符号:
// wrong:
ArrayList<ArrayList<Integer>> br=new ArrayList<ArrayList<Integer>();
// ok:
ArrayList<ArrayList<Integer>> br=new ArrayList<ArrayList<Integer>>();
请注意和。添加。。。返回一个布尔值,因此您可能需要如下内容:
ans.add(0, A.get(index));
mr.add(ans);
然而,在这种情况下,请认为引用是可变的,因此如果稍后更改ans数组,那么mr的元素也将更改。。。因此,在循环中只需要前面提到的两行:
for(int i=0;i<rr.size();i++){
ArrayList<Integer> ans=rr.get(i);
mr.add(ans);
ans.add(0,A.get(index));
}
现在编译完成了,技术部分已经解决,您可以集中精力解决任务的逻辑部分,祝您好运:mr.addans.add0,A.getindex//此代码行中出现错误
您正在尝试将void返回值添加到arraylist。List add方法返回void。所以你得到了以下错误
类型ArrayList>中的方法addArrayList不适用于参数void
试试下面
ans.add(0,A.get(index)); //Add Integer to ArrayList
mr.add(ans); //Add ArrayList<Integer> to ArrayList
这都是真的。但既然代码中已经有addans先生;,OP似乎不太可能想重复这一行。是的,这就是为什么我写OP只需要循环中的两行,我会稍微细化它。因为这显然是一个平等目的的问题,我故意不想提供一个有效的解决方案。。。
ans.add(0,A.get(index)); //Add Integer to ArrayList
mr.add(ans); //Add ArrayList<Integer> to ArrayList