如何在内部实现Ruby中的Hash? Hash使用什么数据结构/算法?

时间:2014-02-05 12:39:23

标签: ruby arrays data-structures hashtable

我知道在Java语言中,HashMap是最常用于实现Ruby Hash等函数的。 Java HashMap使用名为“与链接列表分开链接”的数据结构:http://en.wikipedia.org/wiki/Hash_table

在哪里可以找到Ruby哈希的实现? Ruby Hash正在使用什么数据结构和算法?

2 个答案:

答案 0 :(得分:2)

请在documentation中查看,只需选择方法,然后点击链接:click to toggle source,它会显示来源。

  1. ::[]单例方法:

                   static VALUE
    rb_ary_s_create(int argc, VALUE *argv, VALUE klass)
    {
        VALUE ary = ary_new(klass, argc);
        if (argc > 0 && argv) {
            ary_memcpy(ary, 0, argc, argv);
            ARY_SET_LEN(ary, argc);
        }
    
        return ary;
    }
    
  2. #[]实例方法。

  3. ::[] #[]类的单例方法。

  4. 类的实例方法。

  5. 代码表示将为Hash变量分配零大小的{{3}}:

    Hash

    {{3}}和{{3}}(arr类)的默认尺寸为arr = [] arr # => []

    Hash

答案 1 :(得分:1)

这会有帮助吗?

http://www.ruby-doc.org/core-2.1.0/Array.html#method-c-new

arr = []arr = Array.new(0, nil)相同,其中0是数组的大小。

点击切换源并向下滚动以查看代码。

对于Hash,请查看以下文档:

http://www.ruby-doc.org/core-2.1.0/Hash.html