Я могу создать набор в Scala, который использует отличающийся, равняться/хэш-код/сравнивать реализациям?

Я ищу как простой способ создать набор идентификационных данных. Я просто хочу смочь отслеживать то, "видел" ли я конкретный объект при пересечении графика.

Я не могу использовать регулярный Набор, потому что использование Набора "==" (равняется методу в Scala) сравнить элементы. То, что я хочу, является Набором, который использует "eq".

Там какой-либо путь состоит в том, чтобы создать Набор в Scala, который использует некоторый указанный приложением метод для тестирования равенства вместо вызова, равняется на съемочной площадке элементам? Я искал некоторый "wrapEquals" метод, что я мог переопределить, но не нашел его.

Я знаю, что мог использовать IdentityHashMap Java, но я ищу что-то более общего назначения.

Другая идея, которую я имел, состояла в том, чтобы просто перенести каждый элемент набора в другой объект, который реализации равняется с точки зрения eq, но расточительно генерировать тонны новых объектов только для получения, новое равняется реализации.

Спасибо!

5
задан Eugene Yokota 15 December 2010 в 20:17
поделиться

2 ответа

Это похожий вопрос. Принятый ответ в этом случае заключался в использовании TreeSet и предоставлении специального компаратора .

2
ответ дан 15 December 2019 в 00:55
поделиться

Поскольку вам не требуется ссылка на "видимые" объекты, но просто логическое значение для "contains", я бы предложил просто использовать mutable.Set [Int] и загрузить его значениями, полученными путем вызова System.identityHashCode (obj) .

У пользовательских коллекций Scala достаточно концептуальной поверхности, чтобы отпугнуть большинство людей, которым нужна такая быстрая настройка.

-1
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: