首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哈希表和键顺序

哈希表和键顺序
EN

Stack Overflow用户
提问于 2013-02-15 16:54:42
回答 7查看 35.7K关注 0票数 34

有没有办法在哈希表中保持键的添加顺序?就像一个推送/弹出机制。

示例:

代码语言:javascript
复制
$hashtable = @{}

$hashtable.Add("Switzerland", "Bern")
$hashtable.Add("Spain", "Madrid")
$hashtable.Add("Italy", "Rome")
$hashtable.Add("Germany", "Berlin")
$hashtable

我希望保留将元素添加到哈希表的顺序。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-02-15 17:02:45

PowerShell V1 / V2中没有内置的解决方案。您将需要使用.NET System.Collections.Specialized.OrderedDictionary

代码语言:javascript
复制
$order = New-Object System.Collections.Specialized.OrderedDictionary
$order.Add("Switzerland", "Bern")
$order.Add("Spain", "Madrid")
$order.Add("Italy", "Rome")
$order.Add("Germany", "Berlin")


PS> $order

Name                           Value
----                           -----
Switzerland                    Bern
Spain                          Madrid
Italy                          Rome
Germany                        Berlin

在PowerShell V3中,您可以强制转换为ordered

代码语言:javascript
复制
PS> [ordered]@{"Switzerland"="Bern"; "Spain"="Madrid"; "Italy"="Rome"; "Germany"="Berlin"}

Name                           Value
----                           -----
Switzerland                    Bern
Spain                          Madrid
Italy                          Rome
Germany                        Berlin
票数 58
EN

Stack Overflow用户

发布于 2013-02-15 17:01:11

您可以改用有序字典:

如下所示:

代码语言:javascript
复制
$list = New-Object System.Collections.Specialized.OrderedDictionary
$list.Add("Switzerland", "Bern")
$list.Add("Spain", "Madrid")
$list.Add("Italy", "Rome")
$list.Add("Germany", "Berlin")
$list
票数 10
EN

Stack Overflow用户

发布于 2015-04-10 08:52:22

可以在添加元素时提供一个连续的键:

代码语言:javascript
复制
$hashtable = @{}
$hashtable[$hashtable.count] = @("Switzerland", "Bern")
$hashtable[$hashtable.count] = @("Spain", "Madrid")
$hashtable[$hashtable.count] = @("Italy", "Rome")
$hashtable[$hashtable.count] = @("Germany", "Berlin")
$hashtable

然后,您可以获得按键排序的元素:

代码语言:javascript
复制
echo "`nHashtable keeping the order as they were added"
foreach($item in $hashtable.getEnumerator() | Sort Key)
{
    $item
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14891044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档