Set vs Array , difference Set vs Array , difference ruby ruby

Set vs Array , difference


They are very different.

Array

  • An array is an ordered list of objects.
  • An array value can be accessed by referencing its integer position in the list (zero-indexed): a[3] references the 4th object in the array.
  • There is no restriction on what the values can be—duplicate values are allowed in arrays.
  • An array has an object literal notation: [1, 'apple', String, 1, :banana] (this creates and initializes a new Array).
  • Arrays are built in to the core ruby library.

Set

  • A set is an unordered pool of unique objects.
  • Since it's unordered, there is no integer index you can use to access specific elements of a set.
  • The uniqueness restriction means you can't have more than one copy of a value in the set.
  • Set is not part of the core, but part of the standard library, and thus needs a require 'set'.
  • Before Ruby 2.4, there was no object literal notation for sets, you had to create them via Set.new.
    • For Ruby >= 2.4.0 you can use Set[] (e.g. Set[1,2,3])


For me the main difference is that Sets are implemented as hashes, so you have O(1) membership tests for elements.


Another important difference is in the implementation of the include? method: an Array compares members based on the result of the == method, while a Set uses the eql? method.