设置与arrays,区别
Ruby中Set
和Array
之间的区别是什么,除了集合保留唯一元素而数组可以保留重复元素这一事实?
他们是非常不同的。
排列
- 数组是对象的有序列表。
- 可以通过引用列表中的整数位置(零索引)来访问数组值:
a[3]
引用数组中的第4个对象。 - 对于值可以是什么没有限制 – 在数组中允许重复值。
- 数组有一个对象文字符号:
[1, 'apple', String, 1, :banana]
(这会创建并初始化一个新数组)。 - 数组内置于核心ruby库中。
组
- 集合是一组无序的唯一对象。
- 由于它是无序的,因此没有可用于访问集合中特定元素的整数索引。
- 唯一性限制意味着您不能在集合中拥有多个值的副本。
- 集合没有对象文字表示法,您必须通过
Set.new
创建它们。 -
Set
不是核心的一部分,而是标准库的一部分,因此需要一个require 'set'
。
对我来说,主要区别在于Set
被实现为哈希,因此您对元素进行了O(1)
成员资格测试。
另一个重要的区别是在include?
的实施include?
方法:一个Array根据==
方法的结果比较成员,而一个Set使用eql?
方法。