【问题标题】:Which languages support multi-key associative arrays?哪些语言支持多键关联数组?
【发布时间】:2014-11-21 18:27:59
【问题描述】:

哪些语言支持非标量关联数组键?

我想做一个像这样的数组:

[key1,key2,key3,key4]=>[对象]

如果多个键都必须是标量,我想我会很满意,但如果它们可以是任何数据类型,则可以加分。

【问题讨论】:

    标签: arrays


    【解决方案1】:

    您要查找的内容称为哈希表(或哈希图)。您可以在大多数语言中实现它们。一些语言已经支持哈希表,如 c++、java、lisp、python ...

    以下是一些语言的参考:

    另外,根据个人经验,我发现它们在 lisp 中非常容易工作。

    【讨论】:

    • 啊,事实上 PHP 有它,SplObjectStorage 类。呜呜。 php.net/manual/en/class.splobjectstorage.php
    • 其实我也不确定 SplObjectStorage 是否会起作用,不过这是另一个问题。
    • 在 php 中,您可以使用字符串索引数组(不知道这是否适合您)。这是一个链接stackoverflow.com/questions/6841379/…
    • 是的,但我想做的是使用数组索引数组,以便可以使用数组的任何成员来导航索引。因此,如果一个数组包含 ['foo',400] 并且该节点指向下一个包含 'bar' 的节点,那么 array[400] 将给出 'bar',array['foo'] 也是如此。
    【解决方案2】:

    我不知道有任何直接支持它们的。 Perl 确实允许通过$var{$key1, $key2} 在其关联数组中使用多个标量键,但所做的只是自动将两个值连接成一个更大的值,并且等效于$var{"$key1$;$key2"}$; 是“\034”,因此如果您的键字符串包含该值,则会出现意外冲突。

    通过将更复杂的数据类型序列化为单个字符串,可以在任何语言中应用相同的技巧。

    【讨论】:

      猜你喜欢
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      相关资源
      最近更新 更多