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

PowerShell 5.1中如何让哈希表保持元素添加顺序?

在PowerShell 5.1中让哈希表保持添加顺序

PowerShell 5.1里用@{}默认创建的是标准Hashtable,这类哈希表本身是无序的,内部会根据键的哈希值存储元素,所以输出顺序和你添加元素的顺序不会一致。要实现按添加顺序保存元素,你需要使用有序哈希表,有两种常用实现方式:

方法1:使用[ordered]修饰符创建有序哈希表

这是PowerShell 3.0及以上版本支持的简洁写法,直接在哈希表字面量前加上[ordered]关键字即可:

$rshash = [ordered]@{}
$rshash += @{ "test"=1 }
$rshash += @{ "apple"="m" }
$rshash += @{ "map"="d" }

$rshash

运行结果会严格按照元素添加顺序输出:

Name                           Value                                                                              
----                           -----                                                                              
test                           1                                                                                  
apple                          m                                                                                  
map                            d

方法2:直接实例化OrderedDictionary类

如果你需要更明确地指定类型,可以直接创建System.Collections.Specialized.OrderedDictionary的实例:

$rshash = New-Object System.Collections.Specialized.OrderedDictionary
$rshash.Add("test", 1)
$rshash.Add("apple", "m")
$rshash.Add("map", "d")

$rshash

这个写法的运行结果和方法1完全一致,同样会严格保留元素的添加顺序。

注意:两种方法创建的有序哈希表,用法和普通哈希表基本一致,你可以正常进行键值对的添加、读取、修改操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:05:55