插入带位置的有序哈希表

Posted

技术标签:

【中文标题】插入带位置的有序哈希表【英文标题】:Inserting into Ordered HashTable with Position 【发布时间】:2021-10-02 16:25:34 【问题描述】:

在 PowerShell 中,我有一个包含多个键和值的有序哈希表。根据代码,我向哈希表添加了一个值,但 PowerShell 将添加的键和值附加到列表的末尾。

例如,我的起始哈希表如下所示:

$Hashtable = [ordered]@
  A = 'a'
  B = 'b'
  C = 'c'
  X = 'x'
  Y = 'y'
  Z = 'z'

现在,假设我想在C = c 下方插入一个具有D = d 的密钥。如果您运行 $Hashtable.add('D') = 'd',则 PowerShell 会将其附加到列表底部。

是否有一个特定的哈希表命令可以让我在列表中准确指定 add 应该放置的位置?

【问题讨论】:

【参考方案1】:

PowerShell 的有序hashtables 是.NET 类型System.Collections.Specialized.OrderedDictionary,因此您可以使用后者的.Insert() method,它允许您指定(基于0)的目标索引插入:

$Hashtable = [ordered]@
  A = 'a'
  B = 'b'
  C = 'c'
  X = 'x'
  Y = 'y'
  Z = 'z'


$Hashtable.Insert(3, 'D', 'd')

之后输出$Hashtable 会产生以下结果,表明新的D 条目插入在现有C 条目之后(从技术上讲,插入到X 条目先前占据的位置):

Name                           Value
----                           -----
A                              a
B                              b
C                              c
D                              d     # <- inserted entry, index 3 (4th pos.)
X                              x
Y                              y
Z                              z

【讨论】:

以上是关于插入带位置的有序哈希表的主要内容,如果未能解决你的问题,请参考以下文章

哈希表-线性探测插入删除

数组/链表/哈希表/树结构的优缺点

3.索引

哈希表哈希桶的实现

hash哈希

hash哈希