题目:把一个数组里的数组合全部列出,比如1 2 列出来为1 2 12 21import java.util.Arrays;
import java.util.*;public class Java9_1 { /**
* @param args
*/
public static void main(String[] args) {
String[] num = {"1","2","3"};
listAll(Arrays.asList(num),"");//1
}
public static void listAll(List candidate,String prefix) {
for (int i = 0; i < candidate.size(); i++) {
List list = new ArrayList(candidate);
listAll(list,prefix+list.remove(i)); //2
}
System.out.println(prefix);
}}上述代码谁能给我解释一下,变量prefix代表什么,
1部分代码listAll方法是调用了下面的静态方法,那么2部分的代码中listAll又是什么意思呢
请求这两个问题的解答,谢谢了(声明:这段代码可以运行出结果,没有问题)
import java.util.*;public class Java9_1 { /**
* @param args
*/
public static void main(String[] args) {
String[] num = {"1","2","3"};
listAll(Arrays.asList(num),"");//1
}
public static void listAll(List candidate,String prefix) {
for (int i = 0; i < candidate.size(); i++) {
List list = new ArrayList(candidate);
listAll(list,prefix+list.remove(i)); //2
}
System.out.println(prefix);
}}上述代码谁能给我解释一下,变量prefix代表什么,
1部分代码listAll方法是调用了下面的静态方法,那么2部分的代码中listAll又是什么意思呢
请求这两个问题的解答,谢谢了(声明:这段代码可以运行出结果,没有问题)
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/package exp1;/**
*
* @author szhu5
*/
import java.util.Arrays;
import java.util.*;public class Java9_1
{
public static void main(String[] args)
{
String[] num = {"1","2","3"};
listAll(Arrays.asList(num),"");//Arrays.asList(num)返回一个受指定数组支持的固定大小的列表,然后在作为参数传入ListAll
}
public static void listAll(List candidate,String prefix)
{
for (int i = 0; i < candidate.size(); i++)
{
List list = new ArrayList(candidate);
listAll(list,prefix+list.remove(i)); //list.remove(i)移除此列表中首次出现的指定元素(如果存在),此句也就是说递归调用listall,每次prefix都少上一此的第i个元素
}
System.out.println(prefix);
}}
就想我们刚学编程的时候常用的那个遍历算法
for(i =0;i<n ;i++)
for(j=0;j<n;j++)
System。out.println(i+""+j);道理差不多算法更逻辑一些 ,最后可以不用替重
prefix是前缀,实际上就是把已经组合的数组元素做成一个String,然后传给下一个调用。