gpt4 book ai didi

java - 如何在 Clojure 中使用 java.util.stream.Stream?

转载 作者:行者123 更新时间:2023-11-29 06:26:16 25 4
gpt4 key购买 nike

(import java.nio.file.Files)
(import java.nio.file.Paths)
(import java.util.stream.Stream)

(def path
(Paths/get "."
(into-array ["data" "10000000.test.log"])))

(def stream
(Files/lines path))

这样我有:

stream
#object[java.util.stream.ReferencePipeline$Head 0x50129b8f
"java.util.stream.ReferencePipeline$Head@50129b8f"]

有没有一种方法可以在不耗尽内存的情况下对其进行迭代?关于 SO 的建议并不是很有帮助。文件约为 1G。

最佳答案

做你会在 java 中做的同样的事情。在其上调用互操作方法,如 (.map stream ...) 或其他任何方法,并在最后将其收集到列表中,或减少它,或任何您需要做的事情。

Clojure 函数不实现流所需的接口(interface),例如 java.util.function.Function,因此您需要使用 reify 而不是简单的 fn:

(.map stream (reify java.util.function.Function (apply [this x] (foo x))))

关于java - 如何在 Clojure 中使用 java.util.stream.Stream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403448/

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