Ruby 中的 Hash 内部是如何实现的? Hash 使用什么数据结构/算法? [已关闭]

问题描述 投票:0回答:2

我知道在Java语言中,

HashMap
最常用于实现像Ruby
Hash
这样的功能。 Java
HashMap
使用名为“带有链表的独立链接”的数据结构:http://en.wikipedia.org/wiki/Hash_table

哪里可以找到Ruby hash的实现? Ruby

Hash
使用什么数据结构和算法?

ruby arrays data-structures hashtable
2个回答
4
投票

请参阅文档,只需选择方法,然后单击链接:

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. ::[]
    Hash
    类)的单例方法。

  4. #[]
    Hash
    类)的实例方法。

代码意味着零大小的将被分配给

arr
变量:

arr = []
arr
# => []

Hash
类)的默认大小为
0

# Array
[].size
# => 0
Array.new.size
# => 0

# Hash
{}.size
# => 0
Hash.new.size
# => 0

2
投票

这些有帮助吗?

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

© www.soinside.com 2019 - 2024. All rights reserved.