在PowerShell中设置(数据结构)

时间:2015-03-18 15:48:34

标签: powershell set

有没有办法在 PowerShell 中定义 Set data-structure

  

在计算机科学中,集合是一种抽象数据类型,可以存储某些值,没有任何特定顺序,也没有重复值。它是有限集的数学概念的计算机实现。与大多数其他集合类型不同,不是从集合中检索特定元素,而是通常测试集合中成员资格的值。

我需要使用数据结构作为密钥库:

  • 确保不重复;
  • 最小化计算工作量以便检索和删除元素。

3 个答案:

答案 0 :(得分:30)

您可以使用System.Collections.Generic下的.NET HashSet类:

$set = New-Object System.Collections.Generic.HashSet[int]

该集合保证了唯一的项目,而AddRemoveContains方法的平均复杂度为O(1)。

答案 1 :(得分:5)

如果您喜欢使用本机PowerShell类型,则可以使用HashTable并忽略键值:

# Initialize the set
$set = @{}

# Add an item
$set.Add("foo", $true)

# Or, if you prefer add/update semantics
$set["foo"] = $true

# Check if item exists
if ($set.Contains("foo"))
{
    echo "exists"
}

# Remove item
$set.Remove("foo")

有关更多信息,请参见:https://powershellexplained.com/2016-11-06-powershell-hashtable-everything-you-wanted-to-know-about/#removing-and-clearing-keys

答案 2 :(得分:1)

如果要在具有相对较快的添加,删除和查找操作的数组中仅存储唯一值,则需要使用哈希集。可以将其创建为-

$set = [System.Collections.Generic.HashSet[int]]@()