Set vs Array , difference

前端 未结 3 1575
情书的邮戳
情书的邮戳 2020-12-16 11:06

What is the difference between Set and Array in Ruby except for the fact that sets keep unique elements while arrays can keep duplicate elements?

相关标签:
3条回答
  • 2020-12-16 11:40

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

    0 讨论(0)
  • 2020-12-16 11:52

    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])
    0 讨论(0)
  • 2020-12-16 12:00

    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.

    0 讨论(0)
提交回复
热议问题