public static Set> powerset(Set givenSet) { LinkedList givenSetList = new LinkedList(givenSet); Set> powerSet = new LinkedHashSet>(); for (int i = 0; i < Math.pow(2,givenSet.size()); i++ ) { Set subSet = new LinkedHashSet(); for (E e: givenSetList) { if ((i % (int)Math.pow(2,givenSetList.indexOf(e)) ) == 0) { System.out.println(i+" % "+(int)Math.pow(2,givenSetList.indexOf(e))+" :added "+g subSet.add(e); } } System.out.println(i+" "+Integer.toBinaryString(i)+" one subset is "+subSet); powerSet.add(subSet); } return powerSet; }