You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pharo中Dictionary的排序规则是什么?为何添加顺序与输出顺序不符?

Pharo Dictionary 的元素顺序问题解答

这是特性,绝对不是Bug。

Pharo 里的 Dictionary 是基于哈希表实现的,元素的存储位置由键的哈希值计算决定,和插入顺序无关。你看到的“混乱”顺序,就是哈希表按哈希值分配存储位置后的正常结果。

至于每次创建相同数据的 Dictionary 顺序都一致,原因很简单:同一个键的哈希值是固定的,哈希表的存储逻辑也没有变化,所以每次存储的位置都相同,遍历出来的顺序自然就一致了。

如果需要保留插入顺序的字典,Pharo 提供了 OrderedDictionary 实现,替换后就能按插入顺序返回元素:

| d |

d := OrderedDictionary new: 10.

1 to: 10 do: [ :i |
    d add: i -> (i + 9 printStringBase: 20)
].

d

运行这段代码,得到的结果会严格按照插入顺序排列:

1 -> A
2 -> B
3 -> C
4 -> D
5 -> E
6 -> F
7 -> G
8 -> H
9 -> I
10 -> J

内容的提问来源于stack exchange,提问作者siery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:15:31