gpt4 book ai didi

java - Java 8 流可以处理数量不断增加的元素吗?

转载 作者:行者123 更新时间:2023-11-30 06:05:54 24 4
gpt4 key购买 nike

我进行了一个编程练习来查找回文组合。例如,列表中有哪些回文

[ "abc", "def", "zzb", "cba", "yes", "fed" ]

答案是

["abc", "cba"], ["cba", "abc"], ["def", "fed"], ["fed", "def"], ["abc", "def", "fed", "cba"]

等等。该数据集可能有八个。

我注意到要查询的组合数量大致取决于 N!,这意味着小至 10 个元素的列表意味着搜索超过 300 万个组合。

为了节省内存,我编写了一些函数来获取初始列表并创建排列,但每个找到的排列都会立即得到完全处理。整个臃肿的列表从来都没有被记在内存中。

我没有使用 Java 8 流,因为我认为我无法添加到流源(在本例中为六个元素),并且系统内部会将排列缓冲到其最大列表大小中,这会溢出内存。

Java 中有适合此练习的流解决方案吗?我知道如何创建回文。我寻求的是如何指定一个小列表,排列其所有组合,并且永远不会使用超过一点的内存来获得最终结果。

谢谢,杰罗姆。

最佳答案

您想使用java.util.stream.Stream的静态方法:

static <T> Stream<T>  generate(Supplier<T> s)

Returns an infinite sequential unordered stream where each element is generated by the provided Supplier.

您需要一个为每次调用get()返回一个新组合的类。编写没有像 Python 的 yield 这样的东西可能是一个挑战:)

关于java - Java 8 流可以处理数量不断增加的元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45309315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com