设置与阵列,区别

时间:2011-12-01 08:02:13

标签: ruby arrays set

Ruby中SetArray之间的区别是什么,除了集合保留唯一元素而数组可以保留重复元素这一事实?

3 个答案:

答案 0 :(得分:31)

他们非常不同。

Array

  • 数组是对象的有序列表。
  • 可以通过引用列表中的整数位置来访问数组值(零索引):a[3]引用数组中的第4个对象。
  • 对值可以是什么没有限制 - 数组中允许重复值。
  • 数组具有对象文字符号:[1, 'apple', String, 1, :banana](这会创建并初始化一个新数组)。
  • 数组内置于核心ruby库中。

Set

  • 一个集合是一个无序的唯一对象池。
  • 由于它是无序的,因此没有可用于访问集合中特定元素的整数索引。
  • 唯一性限制意味着您不能在集合中拥有多个值的副本。
  • 集合没有对象文字表示法,您必须通过Set.new创建它们。
  • Set不是核心的一部分,而是标准库的一部分,因此需要require 'set'

答案 1 :(得分:20)

对我而言,主要区别在于Set被实现为哈希,因此您对元素进行了O(1)成员资格测试。

答案 2 :(得分:4)

另一个重要区别在于include?方法的实现:一个Array根据==方法的结果比较成员,而一个Set使用eql?方法。