package bjc.utils.funcutils; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class SetUtils { public static Set> powerSet(Set originalSet) { Set> sets = new HashSet>(); if (originalSet.isEmpty()) { sets.add(new HashSet()); return sets; } List list = new ArrayList(originalSet); T head = list.get(0); Set rest = new HashSet(list.subList(1, list.size())); for (Set set : powerSet(rest)) { Set newSet = new HashSet(); newSet.add(head); newSet.addAll(set); sets.add(newSet); sets.add(set); } return sets; } public static Set toSet(T... elms) { Set set = new HashSet<>(); for(T elm : elms) { set.add(elm); } return set; } }