何时在Perl中使用数组而不是散列更好?

Tyl*_*ler 10 arrays perl hash

假设你有一个阵列 @a = qw/ a b c d/;

和一个哈希 %a = ('a' => 1, 'b' => 1, 'c' => 1, 'd' => 1);

是否存在创建数组版本比创建哈希更好的情况(除非必须迭代所有值,例如类似于

for (@a){
    ....
Run Code Online (Sandbox Code Playgroud)

在这种情况下你必须使用,keys %a如果你去哈希)?因为测试特定值是否在散列中总是比在数组中这样做更有效,所以正确吗?

ike*_*ami 9

    • 数组以数字编号.
    • 哈希是由字符串键入的.
    • 最高索引的所有索引都存在于数组中.
    • 哈希是稀疏索引的.(例如,"a"和"c"可以不存在"b".)

有许多新兴属性.首先,

    • 数组可用于存储有序列表.
    • 以这种方式使用哈希是一种低效的方法.
    • 除非它是最高索引元素,否则无法从数组中删除元素.
    • 您可以从使用数组实现的有序列表中删除,但删除第一个或最后一个元素以外的元素效率很低.
    • 可以从哈希中删除一个元素,并且它是有效的.