如何在Java集合中保存排列

如何在Java集合中保存排列,java,set,permutation,Java,Set,Permutation,我有一个方法,它可以打印出一个集合的排列,我用我的参数给出。但我需要将它们保存在两个单独的集合中并进行比较。例如,我有[5,6,3,1]和[5,6,1,3],通过在两个单独的BST中添加它们,我可以使用compareTo函数来比较它们,以检查它们的级别顺序是否相同。但是我在将这些排列从我的方法保存到我的main中的一个集合时遇到了麻烦。有人知道如何将这些保存到一个集合中吗 我现在所拥有的: import edu.princeton.cs.algs4.BST; 导入java.util.*; 公共类

我有一个方法,它可以打印出一个集合的排列,我用我的参数给出。但我需要将它们保存在两个单独的集合中并进行比较。例如,我有[5,6,3,1]和[5,6,1,3],通过在两个单独的BST中添加它们,我可以使用compareTo函数来比较它们,以检查它们的级别顺序是否相同。但是我在将这些排列从我的方法保存到我的main中的一个集合时遇到了麻烦。有人知道如何将这些保存到一个集合中吗

我现在所拥有的:

import edu.princeton.cs.algs4.BST;
导入java.util.*;
公共类MyBST{
公共静态void main(字符串[]args){
int size=4;
BST bst1=新的BST();
BST bst2=新的BST();
随机r=新随机();
Set tes=新LinkedHashSet(大小);
堆栈=新堆栈();
while(tes.size()
以下是我使用的方法:

publicstaticvoid组合(设置项、堆栈、int-size){
if(stack.size()==size){
System.out.println(堆栈);
}
整数[]itemz=items.toArray(新整数[0]);
对于(整数i:itemz){
堆栈推送(i);
删除第(i)项;
组合(项目、堆栈、大小);
items.add(stack.pop());
}
}
这是输出:


我不确定我是否理解你的想法,但这可能会有所帮助:

您的
组合
方法将返回所有排列的集合(作为堆栈)

。。。
for(int i=0;i
请不要发布文本图像;而是发布文本本身。
...
        for (int i = 0; i < tes.toArray().length; i++) {
            Integer key = it.next();
            bst1.put(key, 0);
        }
        Set<Stack<Integer>> combos = combos(tes, stack, tes.size()); //there you have set with all Stacks
    }
}

    public static Set<Stack<Integer>> combos(Set<Integer> items, Stack<Integer> stack, int size) {
    Set<Stack<Integer>> set = new HashSet<>();

    if(stack.size() == size) {
        System.out.println(stack.to);
        set.add((Stack) stack.clone());
    }

    Integer[] itemz = items.toArray(new Integer[0]);
    for(Integer i : itemz) {
        stack.push(i);
        items.remove(i);
        set.addAll(combos(items, stack, size));
        items.add(stack.pop());
    }
    return set;
}