gpt4 book ai didi

hashmap - 用计数存储二元组的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:11 25 4
gpt4 key购买 nike

我有几个文本文件,我想用这些二元语法在我的文件中出现的次数来创建二元语法。我在想我可以将它们存储在以二元组为键的 HashMap 中,并计为值。但是,我知道 hashmap 使用的内存比列表多得多,我想我可以用包含三元组 (w1、w2、count) 的列表做同样的事情。

所以,在代码中,我现在这样做:

(defparameter mymap (make-hash-table :test 'equal))

(if (gethash "w1 w2" mymap)
(setf (gethash "w1 w2" mymap) (+ 1 (gethash "w1 w2" mymap)))
(setf (gethash "w1 w2" mymap) 1))

最佳答案

除非您有少量键,否则列表可能不是您想要的。 HashMap 可能是一个不错的选择。它可能会使用更多的内存,但可能还不够,您需要担心它,您可以调整 rehash-sizerehash-threshold 来控制内存/您的特定应用程序的性能权衡。 (例如,较小的 rehash-size 和较大的 rehash-threshold 会使用较少的内存,但查找所需的时间会更长)。

另一种选择是二叉搜索树,例如 AVL 树或红黑树。这些不包含在 cl 包中,但有几个 lisp 库提供了实现,包括 fset、lisp 接口(interface)库和 cl-containers。

关于hashmap - 用计数存储二元组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453323/

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