【问题标题】:Hashtable doesn't preserve the insertion order in LispHashtable 不保留 Lisp 中的插入顺序
【发布时间】:2020-12-28 01:35:27
【问题描述】:

我意识到当我在 lisp 中创建一个哈希表时,它不会保留插入顺序,但它有点随机。你知道这可能是什么原因吗?我需要它来维持秩序。

【问题讨论】:

  • 我对lisp一无所知,但哈希表的重点是哈希函数确定元素在数组中的位置。它从不维护秩序。为什么不能使用列表?
  • 你能澄清一下你在说哪个“Lisp”吗?普通的 Lisp?方案?克洛朱尔? LFE?
  • 在 Java 中,LinkedHashMap 就是这样一种数据结构。您需要在某个库中找到 Lisp 等价物或定义您自己的库。默认情况下,Lisp 通常不提供,因为保持条目的顺序需要额外的努力来维护哈希表。

标签: lisp


【解决方案1】:

哈希表数据结构不保证其键的顺序。 Lisp 如此,其他语言和语系也是如此。 (c.f. Drawbacks section of the Wikipedia page on Hash Tables)

也许您可以重申您的问题,以解释为什么您需要(近)恒定时间插入和查找哈希表,但对键有排序约束。可能还有另一种更适合您的目的的数据结构。

【讨论】:

    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 2010-10-14
    • 2012-12-12
    • 1970-01-01
    • 2011-09-18
    • 2018-12-10
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多