我需要创建一个返回arraylist排列的方法。我使用了this方法,但它返回List<List<T>>
,我需要获得Set<Set<T>>
类型。任何人都可以帮我实现这个目标吗?
编辑:我试过了:
public Set<Set<T>> permute() {
List<List<T>> tmp = generatePerm(this);
Set<Set<T>> tmpSet = new HashSet<>();
for (List<T> el : tmp){
tmpSet.add(new HashSet<T>(el));
}
return tmpSet;
}
但它只返回一个排列。
SOLUTION:
好的,我明白了。此方法在扩展ArrayList
的类中,因此我只是将Set<T>
实现到此类,并将此方法的返回类型更改为XList<Set<T>>
并且它有效。
答案 0 :(得分:0)
你不能这样做,因为一个集实际上是一个无序列表(Collection)。而且,创建排列需要订单。因此,即使我们假设这是可能的,您每次都会得到相同的集合,因此您将拥有n个等效集合。