我遇到了一个从 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}....
我已经完成了这项工作,方法是获取除第一个之外的列表元素的 powerset,然后将第一个元素与这些子集相加。但这适用于像 7 或 8 这样的少数元素,但如果列表增长则无法工作。是否需要像我为这份工作做的那样做一个 powerSet 算法?如果没有,那么我怎样才能得到预期的结果。我认为存在内存泄漏问题。因为我需要存储这些结果以进行进一步处理。
我按照以下链接的一些建议完成了这项工作:
在Java中获取一个集合
的幂集计算一组数字的所有子集
如何从arrayList对象生成所有可能的幂集(或子集)?
但是对于大型列表来说,这些需要花费很多时间并且最终无法获得结果,因为我的 netbeans IDE 被绞死了!
我需要一些与此方案相关的建议或示例代码。
谢谢!