Powershell 中的@() 和@{} 有什么区别以及何时使用它们?

What is the difference between @() and @{} in Powershell and when to use one over another?

我正在查看 powershell 中的一些示例并查看 @() 和 @{} 的用法。 Doing a quick google search on the difference 告诉我一个是数组,另一个是哈希表。

你能分享一些现实生活中的例子吗?比如我想构建一个哈希表而不是数组? pros/cons 一个比另一个?预先感谢您的意见!

array is simply a list of values whereas a hashtable 是 key/value 对的集合。

这里有一些例子:

数组

$i = @(1,2,3,4,5)

哈希表

[hashtable]$i = @{ Number = 1; Shape = "Square"; Color = "Blue"}

散列的优点table

  • 主要优点是同步。

  • 在许多情况下,散列 table 比搜索树或任何其他 table 查找结构更有效。因此,它们被广泛用于多种计算机软件,特别是关联数组、数据库索引、缓存和集合。

散列的缺点table

  • 哈希冲突实际上是不可避免的。在散列大量可能密钥的随机子集时。

  • 哈希table在有很多冲突时变得非常低效。

  • 哈希 table 不允许空值,如哈希映射。

数组的优点

  • 类型安全。收集相同类型的数据。

  • 可以通过索引访问

  • 用于存储较少的值。

数组的缺点

  • 固定尺寸。

  • 内存浪费。在处理大量值时没有用。