hashcode- все статьи тега


Почему C# не реализует GetHashCode для коллекций?

Я портирую что-то с Java на C#. В Java hashcode a ArrayList зависит от элементов в нем. В C# я всегда получаю один и тот же хэш-код из List... Почему это? Для некоторых моих объектов хэш-код должен быть другим, потому что объекты в их свойстве list делают объекты неравными. Я ожидал бы, что хэш-код всегда уникален для состояния объекта и только равен другому хэш-коду, когда объект равен. Или я ошибаюсь? ...

C# переопределение метода GetHashCode

В этом примере плакат переопределил метод get hash code. Я понимаю, что это было сделано для того, чтобы обеспечить лучшее хэш-значение для возвращаемого объекта, уменьшить количество коллизий и, следовательно, уменьшить количество случаев, когда необходимо будет вызвать Equals(). Что я хотел бы знать, так это то, как был вычислен этот алгоритм: return 17 + 31 * CurrentState.GetHashCode() + 31 * Command.GetHashCode(); Есть ли какая-то особая причина, по которой были выбраны эти числа? Мог ...

Реализация hashCode () по умолчанию для объектов Java

Я пытался понять хэш-код () для объекта Java и увидел следующий код для метода hashCode () объекта Java: package java.lang; public class Object { // Some more code public native int hashCode(); // Some other code } Теперь мы знаем, что если мы создаем класс, он неявно расширяет класс объектов, и для этого я написал примерный пример: package com.example.entity; public class FirstClass { private int id; private String name; // getters and setters } Таким образом, этот кл ...

Каков наилучший алгоритм для переопределенной системы.Объект.GetHashCode?

в .NET System.Object.GetHashCode метод используется во многих местах, во всех библиотеках базовых классов .NET. Особенно при быстром поиске элементов в коллекции или определении равенства. Есть ли стандартный алгоритм / лучшая практика о том, как реализовать GetHashCode переопределить для моих пользовательских классов, чтобы не снизить производительность? ...

Почему важно переопределить GetHashCode, когда метод Equals переопределен?

учитывая следующий класс public class Foo { public int FooId { get; set; } public string FooName { get; set; } public override bool Equals(object obj) { Foo fooItem = obj as Foo; return fooItem.FooId == this.FooId; } public override int GetHashCode() { // Which is preferred? return base.GetHashCode(); //return this.FooId.GetHashCode(); } } Я переопределил Equals метод, потому что Foo представляют собой строку Fooтаб ...

Как определить равенство для двух объектов JavaScript?

строгий оператор равенства скажет вам, если два объекта типы равны. Однако, есть ли способ сказать, если два объекта равны, очень похоже на хэш-код значение в Java? вопрос переполнения стека есть ли какая-либо функция хэш-кода в JavaScript? похож на этот вопрос, но требует более научный ответ. Сценарий выше демонстрирует, почему это было бы необходимо иметь один, и мне интересно, есть ли какие-либо эквивалент раствор. ...

Почему мне нужно переопределить методы equals и hashCode в Java?

недавно я прочитал этот Разработчик Документа. документ все об определении hashCode() и equals() эффективно и правильно, однако я не могу понять, почему мы должны переопределить эти два метода. Как я могу принять решение эффективно реализовать эти методы? ...

Лучшей реализации hashCode метод для коллекции

Как мы определимся с лучшей реализацией hashCode() метод для коллекции (при условии, что метод equals был переопределен правильно) ? ...

Как получить уникальный идентификатор объекта, который переопределяет hashCode()?

когда класс в Java не переопределяет hashCode (), печать экземпляра этого класса дает хороший уникальный номер. Javadoc объекта говорит о hashCode (): насколько это разумно практично, метод hashCode, определенный объектом класса, возвращает различные целые числа для различных объектов. но когда класс переопределяет hashCode (), Как я могу получить это уникальный номер? ...

Как Java HashMap обрабатывает различные объекты с одним и тем же хэш-кодом?

в моем понимании мне кажется: это совершенно законно для двух объектов, чтобы иметь тот же хэш-код. если два объекта равны (используя метод equals ()), то они имеют один и тот же хэш-код. если два объекта не равны, то они не могут иметь одинаковый хэш-код Я прав? Теперь, если я прав, у меня есть следующий вопрос: Элемент HashMap внутренне использует хэш-код объекта. Так что если два объекты могут иметь один и тот же хэш-код, тогда как HashMap отслеживать, какой ключ он использует? может кто ...

Рекомендации GetHashCode в C#

Я прочитал в основной книге C# 3.0 и .NET 3.5, что: GetHashCode()’s возвращает в течение жизни конкретного объекта должно быть константа (то же значение), даже если данные объекта изменяются. Во многом случаи, вы должны кэшировать метод return для обеспечения этого. это действительное руководство? Я пробовал пару встроенных типов в .NET, и они не вели себя так. ...

Согласованность хэш-кода() в строке Java

значение хэш-кода строки Java вычисляется как (строку.hashCode ()): s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] есть ли какие-либо обстоятельства (скажем, версия JVM, поставщик и т. д.), при которых следующее выражение будет false? boolean expression = "This is a Java string".hashCode() == 586653468 обновление #1: если вы утверждаете, что ответ "да, есть такие обстоятельства" - то, пожалуйста, приведите конкретный пример, когда "это строка Java".метод hashCode() != 586653468. Постарайтесь ...

Адрес памяти переменных в Java

пожалуйста, посмотрите на картинку ниже. Когда мы создаем объект в java с новым ключевым словом, мы получаем адрес памяти из ОС. когда мы пишем out.println(objName) мы можем видеть "специальную" строку в качестве вывода. Мои вопросы: что это за выход? Если это адрес памяти, который нам дала ОС: a) как я могу преобразовать эту строку в двоичную? b) как я могу получить одну целочисленную переменную адрес? ...

Уникальный идентификатор объекта .NET

есть ли способ получить уникальный идентификатор экземпляра? GetHashCode() одинакова для двух ссылок, указывающих на один и тот же экземпляр. Однако два разных экземпляра могут (довольно легко) получить один и тот же хэш-код: Hashtable hashCodesSeen = new Hashtable(); LinkedList<object> l = new LinkedList<object>(); int n = 0; while (true) { object o = new object(); // Remember objects so that they don't get collected. // This does not make any difference though :( ...

Как должны быть реализованы equals и hashcode при использовании JPA и Hibernate

Как должны быть реализованы равенства и хэш-код класса модели в Hibernate? Каковы типичные ошибки? Является ли реализация по умолчанию достаточно хорошей для большинства случаев? Есть ли смысл использовать бизнес-ключи? Мне кажется, что довольно сложно заставить его работать в любой ситуации, когда учитываются ленивая выборка, генерация идентификаторов, прокси и т. д. ...

Плохая идея использовать строковый ключ в HashMap?

Я понимаю, что класс String' hashCode () метод не гарантированный для генерации уникальных хэш-кодов для различных String-s.Я вижу много использования ввода строковых ключей в HashMap-s (используя метод хэш-кода строки по умолчанию ()). Многие из этого использования может привести к значительным проблемам приложений, если карта put переместил запись HashMap, которая ранее была помещена на карту с истинно отличным строковым ключом. каковы шансы что вы столкнетесь со сценарием, где строка.hash ...

Что такое хэш-код объекта, если hashCode () не переопределен?

Если метод hashCode() не переопределен, каков будет результат вызова hashCode () для любого объекта в Java? ...

Как Java упорядочивает элементы в HashMap или HashTable?

мне было интересно, как Java заказывает элементы в Map (HashMap или Hashtable), когда они добавляются. Ключи упорядочены по хэш-коду, ссылке на память или по приоритету выделения...? это потому, что я заметил такие же пары в Map не всегда в том же порядке ...

toString (), equals () и hashCode () в интерфейсе

Итак, у меня есть интерфейс с кучей методов, которые должны быть реализованы, имена методов не имеют никакого отношения. объекты, реализующие этот интерфейс, часто помещаются в коллекции, а также имеют специальный формат toString (), который я хочу, чтобы они использовали. Итак, я подумал, что было бы удобно поместить hashCode (), equals () и toString() в интерфейс, чтобы убедиться, что я не забыл переопределить метод по умолчанию для них. Но когда я добавил Эти методы для интерфейса IDE / ком ...