如何在 Pharo 中订购字典?

sie*_*ery 3 collections dictionary smalltalk pharo

假设我们有一个循环,以明确的顺序输入Associations 到 a :Dictionary

| d |

d := Dictionary new: 10.

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

d
Run Code Online (Sandbox Code Playgroud)

当我评估这段代码时,我得到了Dictionary一个“扭曲”的顺序:

9 -> I
5 -> E
1 -> A
10 ->J
6 -> F
2 -> B
7 -> G
3 -> C
8 -> H
4 -> D
Run Code Online (Sandbox Code Playgroud)

每次Dictionary创建具有相同条目数据的 a 时,它都具有相同的顺序,所以我认为这是一个功能而不是错误..?

我使用 Pharo v9.0.21。

Joh*_*n B 6

字典不是有序集合。相反,它是一个带键的集合,保存键值对。

有一个 OrderPreservingDictionary 供您使用:https ://github.com/pharo-contributions/OrderPreservingDictionary