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

[玩转系统] 哈希表

作者:精品下载站 日期:2024-12-14 02:55:53 浏览:13 分类:玩电脑

哈希表


语法:

有用的提示

语法定义中的 ~opt~ 表示法表示词汇实体在语法中是可选的。

hash-literal-expression:
    @{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }

hash-literal-body:
    hash-entry
    hash-literal-body statement-terminators hash-entry

hash-entry:
    key-expression = new-lines~opt~ statement

key-expression:
    simple-name
    unary-expression

statement-terminator:
    ;
    new-line-character

10.1 简介

Hashtable 类型表示键/值对对象的集合,该对象支持在按键索引时有效检索值。每个键/值对都是一个元素,它存储在某种实现定义的对象类型中。

元素的键不能为空值。键或值的类型没有限制。不支持重复的键。

给定一个键/值对对象,可以分别使用实例属性 Key 和 Value 来获取键和关联值。

给定一个或多个键,可以通过哈希表下标运算符 [] 访问相应的值(第 7.1.4.3 节)。

所有哈希表都有类型 Hashtable (§4.3.3)。

Keys 返回的集合中键的顺序是未指定的;但是,它与 Values 返回的集合中关联值的顺序相同。

以下是一些涉及哈希表的示例:

$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys

Hashtable 元素存储在 DictionaryEntry 类型的对象中,并且 Keys 和 Values 返回的集合的类型为 ICollection

10.2 哈希表创建

Hashtable 是通过哈希文字 (§7.1.9) 或 New-Object cmdlet 创建的。它可以用零个或多个元素创建。 Count 属性返回当前元素计数。

10.3 添加和删除哈希表元素

通过将值分配(§7.11.1)到不存在的键名或使用不存在的键名的下标(§7.1.4.3),可以将元素添加到Hashtable 。删除元素需要使用Remove方法。例如,

$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried

10.4 哈希表串联

哈希表可以通过 ++= 运算符连接,这两个运算符都会创建新的Hashtable。现有的哈希表保持不变。有关详细信息,请参阅第 7.7.4 节。

10.5 作为引用类型的哈希表

由于 Hashtable 是引用类型,因此 Hashtable 的赋值涉及浅拷贝;也就是说,分配给的变量引用同一个Hashtable;没有创建Hashtable 的副本。例如,

$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2

10.6 枚举哈希表

要处理 Hashtable 中的每一对,请使用 Keys 属性以数组形式检索键列表,然后通过枚举该数组的元素获取关联值Value 属性或下标,如下

$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
   "Key is " + $e + ", Value is " + $h1[$e]
}

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

取消回复欢迎 发表评论:

关灯