我正在尝试编写一种方法,该方法返回一个ArrayList<ArrayList<String>>
包含较小 ArrayLists 的大数组,每个数组都有不同的起始 ArrayList 排列。
这是我的方法:
public static ArrayList<ArrayList<String>> permute(ArrayList<String> x) {
ArrayList<ArrayList<String>> res = new ArrayList<ArrayList<String>>();
while (res.size() < fac(x.size())) { //fac method works fine
Collections.shuffle(x);
if (!res.containsAll(x)) {
res.add(x);
}
}
return res;
}
我的方法是基本上不断改组原始的 ArrayList,x,并检查它是否已经在结果 ArrayList 中,如果不是,那么我添加它。出于某种原因,当我尝试这种方法时,生成的 ArrayList 包含相同的 ArrayList,即使我有一个专门的 if 语句,这样就不会发生这种情况。
我错过了什么?