使用include有什么区别?对于数组和哈希?

时间:2014-08-22 23:22:11

标签: ruby arrays hash

我想使用方法include?来检查给定项是否存在。有人会告诉我使用Array和使用Hash有什么区别吗?

例如:

a=[]; 
h={}
a.include? "abc"
h.include? "abc"

使用Hash应该更快,更耗费内存吗?

1 个答案:

答案 0 :(得分:0)

如果感到困惑,请阅读文档!

来自:http://www.ruby-doc.org/core-2.1.1/Hash.html#method-i-include-3F

  

哈希#包括?如果hsh中存在给定键,则返回true。

来自:http://www.ruby-doc.org/core-2.1.1/Array.html#method-i-include-3F

  

阵列#包括?如果给定对象存在于self中(即,如果任何元素== object),则返回true,否则返回false。

所以Hash#include?寻找匹配的键,而不是值。 Array#include?在列表中搜索匹配的对象。


通常,在拥有有序对象列表时使用数组。如果需要名为对象的集合,请使用哈希。


  

在Ruby中使用Hash应该更快,内存消耗更多吗?

暂时不要担心这件事。真。

从技术上讲,由于散列键可以是大对象,因此散列可能会占用更多内存。但是这可以通过使用占地面积较小的键来驯服。如果这是一个主要问题,甚至根本不使用红宝石也是个好主意。在大多数情况下,首先使用具有逻辑意义的数据结构,然后再对其进行优化。