我正在经历一个从arrayList创建子集或powersets的问题,可能是70或80或更多的String元素,然后进一步处理这些子集(或powersets)。例如,我有一些arrayLists,它们具有非重复字符串作为元素,如下所示(字符串实际上有多个字符):
List<String> list = new ArrayList<>();
list.add("a");
list.add("c");
list.add("g");
list.add("n");
list.add("f");
and so on...
然后我需要让子集(或powersets)包含第一个元素。例如:{a,g}, {a,b}, {a,n,f}, {a,g,n,f}....
我已经完成了这项工作,除了第一个列表元素之外,获取列表元素的powersets,然后添加带有这些子集的第一个元素。但这适用于少数元素,如7或8,但如果列表增长则无法工作。是否需要像我正在为这份工作做的那样做一个powerSet算法?如果没有,那么我怎样才能得到预期的结果。我想有一个内存泄漏的问题。因为我需要存储这些结果以进行进一步处理。
我已经按照以下链接的一些建议完成了这项工作:
Obtaining a powerset of a set in Java
Calculating all of the subsets of a set of numbers
how to make all possible power set(or subset) from arrayList objects?
但那些大型列表需要花费很多时间才能获得结果,因为我的netbeans IDE被绞死了!
我需要一些与此方案相关的建议或示例代码。
谢谢!
答案 0 :(得分:3)
由于幂集的基数为2^n
,其中n
是开头集中元素的数量,我会说你不会计算一组2 ^ 70个元素。
我的建议是动态建立动力装置的元素并随时处理它们,所以你不需要存储所有这些元素。