设置与阵列,区别

Mel*_*lon 19 ruby arrays set

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

Ben*_*Lee 31

他们是非常不同的.

排列

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

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

  • 现在*有*一个字面表示法(从 ruby​​ 2.4 开始):Set[1,2,3] (2认同)

Mic*_*ohl 21

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