Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用递归方法在ArrayList上保留不同的值?_Java_Recursion_Arraylist - Fatal编程技术网

Java 如何使用递归方法在ArrayList上保留不同的值?

Java 如何使用递归方法在ArrayList上保留不同的值?,java,recursion,arraylist,Java,Recursion,Arraylist,我正在使用递归方法进行置换,我希望将置换保留在ArrayList中。如果一个置换等于另一个置换,我想删除这个bc,比如123等于132,124等于142。我想避免重复 排列如下: (1) : 1 2 3 (2) : 1 2 4 (3) : 1 3 2 (4) : 1 3 4 (5) : 1 4 2 (6) : 1 4 3 (7) : 2 1 3 (8) : 2 1 4 (9) : 2 3 1 (10) : 2 3 4 (11) : 2 4 1 (12) : 2 4 3 (1

我正在使用递归方法进行置换,我希望将置换保留在ArrayList中。如果一个置换等于另一个置换,我想删除这个bc,比如123等于132,124等于142。我想避免重复

排列如下:

(1) : 1 2 3 
(2) : 1 2 4 
(3) : 1 3 2 
(4) : 1 3 4
(5) : 1 4 2 
(6) : 1 4 3 
(7) : 2 1 3 
(8) : 2 1 4 
(9) : 2 3 1 
(10) : 2 3 4 
(11) : 2 4 1 
(12) : 2 4 3 
(13) : 3 1 2 
(14) : 3 1 4
(15) : 3 2 1
(16) : 3 2 4
(17) : 3 4 1 
(18) : 3 4 2
(19) : 4 1 2
(20) : 4 1 3 
(21) : 4 2 1
(22) : 4 2 3 
(23) : 4 3 1 
(24) : 4 3 2
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
但当我要求打印ArrayList时,列表如下:

(1) : 1 2 3 
(2) : 1 2 4 
(3) : 1 3 2 
(4) : 1 3 4
(5) : 1 4 2 
(6) : 1 4 3 
(7) : 2 1 3 
(8) : 2 1 4 
(9) : 2 3 1 
(10) : 2 3 4 
(11) : 2 4 1 
(12) : 2 4 3 
(13) : 3 1 2 
(14) : 3 1 4
(15) : 3 2 1
(16) : 3 2 4
(17) : 3 4 1 
(18) : 3 4 2
(19) : 4 1 2
(20) : 4 1 3 
(21) : 4 2 1
(22) : 4 2 3 
(23) : 4 3 1 
(24) : 4 3 2
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
代码如下:(方法“getCyclesThroughPermutation”在main内部调用)

private static int cont=0;
私有静态int[]置换;
公共静态void getCycleSthrough置换(字节[][]矩阵,int顶点){
allPermutations=新的ArrayList();
/*这将表示所有顶点*/
int-allVertices[]=新的int[顶点];
/*为顶点数组指定值*/
int值=0;
对于(int i=0;i<顶点;i++){
值++;
所有顶点[i]=值;
} 
/*调用permute方法*/
应用程序排列(所有顶点);
}
public static ArrayList allPermutations=new ArrayList();
/**
*Main方法:接收其元素将被置换的数组。
*@param顶点
*/
公共静态无效置换(int[]顶点){
//i.长度
对于(int i=3;i<4;i++){
置换=新整数[i];
置换(顶点,0,所有置换);
}
for(int i=0;i
似乎是一个集合的用例,而不是一个列表,不是吗?所以输入的预期输出应该是
[[1,2,3,4]
,[1,2,4],[1,3,4],[1,3,4],[2,3,4]?是的,输入是一个邻接矩阵,但数字是1,2,3和4,输出应该是我显示的第一个列表