Java列表问题
我试图编写一个方法,该方法接收字符串列表,并返回包含n个元素的子集。这是我的密码:Java列表问题,java,list,equality,Java,List,Equality,我试图编写一个方法,该方法接收字符串列表,并返回包含n个元素的子集。这是我的密码: import Pack; import java.util.List; import java.util.ArrayList; public class Testtt{ public static void main(String[] args) { List<String> input = new ArrayList<String>(); inp
import Pack;
import java.util.List;
import java.util.ArrayList;
public class Testtt{
public static void main(String[] args) {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
input.add("d");
input.add("e");
System.out.println(subset(input, 3));
}
public static List<List<String>> subset( List<String> inputlist, int n) {
List<List<String>> output = new ArrayList<List<String>>();
List<String> temp = new ArrayList<String>();
for (int i = 0; i < n; i++) {
temp = inputlist;
System.out.println("Temp = " +temp);
temp.remove(i);
output.add(temp);
}
return output;
}
}
我在循环的开头写了temp=list,但它保持不变。为什么会发生这种情况?for(int i=0;ifor (int i = 0; i < n; i++) {
temp = inputlist;
System.out.println("Temp = " +temp);
temp.remove(i);
output.add(temp);
}
temp=输入列表;
系统输出打印项次(“Temp=“+Temp”);
移除温度(i);
输出。添加(温度);
}
在这里,您将从临时arraylist中删除一个元素,并将其添加到输出arraylist中。现在,您正在保留temp的引用,并在同一temp arraylist上进行删除,这将导致您显示的输出。根据您的程序,显示的输出是正确的。如果需要,临时输出应该存储在输出数组列表中,只需创建数组列表的新实例并将其存储在输出中。我无法理解此处的预期结果。 但有两个基本错误:
这就是为什么此代码删除a、c和e,而不是b和d。欢迎使用StackOverflow。关于代码中问题的问题必须包括代码,而不是指向外部站点(如pastebin)的链接。如果代码太长,您应该将其缩减到只显示问题的关键部分。请阅读并确认。您对您发布的代码有任何疑问吗?
for (int i = 0; i < n; i++) {
temp = inputlist;
System.out.println("Temp = " +temp);
temp.remove(i);
output.add(temp);
}