public?String[]?getAll(int[]?array)?{
????????int?n?=?Array.getLength(array);
????????int?total?=?(int)?Math.pow(2,?n);
????????Logger?log?=?Logger.getLogger("myLog");
????????log.info("?the??total?:"?+?total);
????????String[]?outArray?=?new?String[total];
????????for?(int?i?=?0;?i?<?total;?i++)?{
????????????StringBuffer?bs?=?new?StringBuffer("");
????????????for?(int?j?=?0;?j?<?n;?j++)?{
????????????????if?(((i?>>?j)?%?2)?==?1)?{
????????????????????bs.append(String.valueOf(Array.get(array,?j)));
????????????????}
????????????}
????????????outArray[i]?=?bs.toString();
????????}
????????return?outArray;
????}
以上代碼把生成的子集存放到一個字符串數組中,當集合的基數很大時,需要很大
內存, 可以根據需要把上面程序改改不要放到數組中,而是邊生成邊使用.