Skip to content

Instantly share code, notes, and snippets.

@gabhi
Created April 11, 2014 18:21
Show Gist options
  • Save gabhi/10489702 to your computer and use it in GitHub Desktop.
Save gabhi/10489702 to your computer and use it in GitHub Desktop.
Powerset - subsets of set
public static <T> Set<Set<T>> powerSet(Set<T> originalSet) {
Set<Set<T>> sets = new HashSet<Set<T>>();
if (originalSet.isEmpty()) {
sets.add(new HashSet<T>());
return sets;
}
List<T> list = new ArrayList<T>(originalSet);
T head = list.get(0);
Set<T> rest = new HashSet<T>(list.subList(1, list.size()));
for (Set<T> set : powerSet(rest)) {
Set<T> newSet = new HashSet<T>();
newSet.add(head);
newSet.addAll(set);
sets.add(newSet);
sets.add(set);
}
return sets;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment