设置与arrays,区别

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

他们是非常不同的。

排列

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

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

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

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