A recursive method call that solves all subsets of a collection.
Packagech01;ImportJava.util.HashSet;ImportJava.util.Iterator;Importjava.util.LinkedList;Importjava.util.List;ImportJava.util.Set; Public classQuerysubset { Public StaticList<set<object>> Query (set<object>target) { if(target.size () = = 0) {List<Set<Object>> list=NewLinkedlist<set<object>>(); List.add (target); returnlist; }Else if(target.size () = = 1) {List<Set<Object>> list=NewLinkedlist<set<object>>(); List.add (target); Set<Object> nullset=NewHashset<object>(); List.add (Nullset); returnlist; }Else{Iterator<Object> iter=Target.iterator (); Object Elem=Iter.next (); Target.remove (Elem); Set<Object> newset=NewHashset<object>(); Newset.add (Elem); List<Set<Object>> list1=Query (Newset); List<Set<Object>> list2=Query (target); returnmerge (List1, list2); } } Public StaticList<set<object>> merge (list<set<object>> List1, list<set<object>>List2) {List<Set<Object>> mlist=NewLinkedlist<set<object>>(); for(set<object>set1:list1) for(set<object>set2:list2) {Set<Object> newset=NewHashSet (); Newset.addall (SET1); Newset.addall (Set2); Mlist.add (Newset); } returnmlist; } /** * @paramargs*/ Public Static voidMain (string[] args) {//TODO auto-generated Method StubSet<object> targ=NewHashset<object>(); for(inti=0; i<10; i++) {Targ.add (integer.tostring (i)); } List<Set<Object>> allsubset=querysubset.query (Targ); Booleanf1=true; for(set<object>Set1:allsubset) { if(!F1) System.out.print (","); F1=false; System.out.print ("{"); BooleanF2=true; for(Object obj:set1) {if(!F2) System.out.print (","); F2=false; System.out.print (Obj.tostring ()); } System.out.println ("}"); } }}
Java to find all subsets of a collection