好奇,如果PowerShell中有一个构造可以做到这一点吗?
我知道你可以这样做:
$arr = @(1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
$arr = $arr | Get-Unique
但是在性能方面似乎最好忽略该值,因为您将其输入数组而不是在事后过滤掉。
答案 0 :(得分:1)
如果您将大量项目插入到数组(数千个)中,性能会下降,因为每次添加时都需要重新初始化数组,因此在您的情况下,性能可能会更好用别的东西。
字典或HashTable可能是一种方式。您可以使用$ hash.Keys检索您的单维唯一数组。例如:
$hash = ${}
$hash.Set_Item(1,1)
$hash.Set_Item(2,1)
$hash.Set_Item(1,1)
$hash.Keys
1
2
如果您使用Set_Item,将创建或更新密钥,但不会重复。如果你没有使用它,那就把它放在其他任何东西上了,但也许你也需要一个关于你的问题的价值。
答案 1 :(得分:0)
你也可以使用Arraylist:
Measure-Command -Expression {
$bigarray = $null
$bigarray = [System.Collections.ArrayList]@()
$bigarray = (1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
$bigarray | select -Unique
}
时间过去了:
TotalMilliseconds:0,6581
Measure-Command -Expression {
$array = @(1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
$array | select -Unique
}
时间过去了: