Подтвердить что ты не робот

Set vs Array, разность

В чем разница между Set и Array в Ruby, за исключением того факта, что наборы сохраняют уникальные элементы, в то время как массивы могут содержать повторяющиеся элементы?

4b9b3361

Ответ 1

Они очень разные.

Array

  • Массив - упорядоченный список объектов.
  • Доступ к массиву можно получить, указав его целую позицию в списке (с нулевой индексацией): a[3] ссылается на 4-й объект в массиве.
  • Нет ограничений на то, что значения могут быть: дублирующиеся значения разрешены в массивах.
  • В массиве есть литеральная запись объекта: [1, 'apple', String, 1, :banana] (это создает и инициализирует новый массив).
  • Массивы встроены в базовую библиотеку ruby.

Set

  • Набор представляет собой неупорядоченный пул уникальных объектов.
  • Поскольку он неупорядочен, нет целочисленного индекса, который вы можете использовать для доступа к определенным элементам набора.
  • Ограничение уникальности означает, что вы не можете иметь более одной копии значения в наборе.
  • Для наборов нет литерала о литералах объектов, вы должны создать их через Set.new.
  • Set не является частью ядра, а является частью стандартной библиотеки и поэтому нуждается в require 'set'.

Ответ 2

Для меня основное отличие заключается в том, что Set реализованы как хэши, поэтому у вас есть тесты O(1) для элементов.

Ответ 3

Другое важное отличие заключается в реализации метода include?: Array сравнивает членов на основе результата метода ==, а Set использует метод eql?.