当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 对哈希表进行排序

作者:精品下载站 日期:2024-12-14 07:43:57 浏览:14 分类:玩电脑

对哈希表进行排序


[玩转系统] 对哈希表进行排序

假设您有一个像这样的简单哈希表:

$hash = @{
Name="Jeff"
Size = 123
Color = "Green"
Computer = "Yoga2Pro"
}

并且显示如下:

PS C:\scripts> $hash

Name                           Value
----                           -----
Color                          Green
Name                           Jeff
Computer                       Yoga2Pro
Size                           123

要对键进行排序,您可以使用 GetEnumerator() 方法,该方法是每个哈希表对象的一部分。此方法为哈希表中的每个项目创建一个 System.Collections.DictionaryEntry 对象。

PS C:\scripts> $hash.GetEnumerator()  | get-member


   TypeName: System.Collections.DictionaryEntry

Name        MemberType    Definition
----        ----------    ----------
Name        AliasProperty Name = Key
Equals      Method        bool Equals(System.Object obj)
GetHashCode Method        int GetHashCode()
GetType     Method        type GetType()
ToString    Method        string ToString()
Key         Property      System.Object Key {get;set;}
Value       Property      System.Object Value {get;set;}

这意味着您可以对任何属性进行排序。

PS C:\scripts> $hash.GetEnumerator() | sort key

Name                           Value
----                           -----
Color                          Green
Computer                       Yoga2Pro
Name                           Jeff
Size                           123


PS C:\scripts> $hash.GetEnumerator() | sort value

Name                           Value
----                           -----
Size                           123
Color                          Green
Name                           Jeff
Computer                       Yoga2Pro

顺便说一下,从 PowerShell 3.0 开始,您可以通过将哈希表定义为“有序”来对哈希表进行“预排序”。

$hash = [ordered]@{
Name="Jeff"
Computer = "Yoga2Pro"
Color = "Green"
Size = 123
}

现在,哈希表将始终按照您定义条目的顺序进行排序。

PS C:\scripts> $hash

Name                           Value
----                           -----
Name                           Jeff
Computer                       Yoga2Pro
Color                          Green
Size                           123

不过,如果你想排序,你仍然可以。

PS C:\scripts> $hash.GetEnumerator() | sort name -Descending

Name                           Value
----                           -----
Size                           123
Name                           Jeff
Computer                       Yoga2Pro
Color                          Green

祝你度过愉快的一周,我希望你能把事情解决好。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯