Два списка одинаковых объектов имеют разные хэш -кодыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Два списка одинаковых объектов имеют разные хэш -коды

Сообщение Anonymous »

У меня есть вопрос, касающийся реализации хэшкода списка в Java. < /p>

Для лучшего понимания я просто опишу свою конструкцию данных.
Я прочитал Информация о графике из двух разных баз данных и хранить ее в абстрактном представлении графика. Поэтому у меня есть два хэшмапа, по одному для каждой базы данных. Карта содержит строку как ключ и объект graphlayer как значение: hashmap . Объект GraphLayer имеет двух пользовательских членов типа PapermetAdata и конференций по конференциям, а также . PapermetAdata состоит из некоторых членов примитивной строки типа и члена HashMap . Автор содержит только примитивные элементы строки, а также принадлежность. ConferencenceserieAndinstance содержит также нормальные элементы строки и член типа Hashmap , где класс ConferenceInstance просто конатины строки.
Я надеюсь, что пока все ясно. После этого я конвертирую каждую карту в список. Пока все хорошо, но порядок объектов в списке отличается (а также на карте, прежде чем я преобразую карту). Актерский состав от Hashmap до ArrayList выглядит так. < /P>

Код: Выделить всё

public List searchAuthor() {
...
return (List) new ArrayList(graph.values());
}
< /code>

Но оба списка содержат одинаковые объекты. Если я вызову метод hashcode () < /code> из каждого списка, я получаю разные хэш -коды. < /P>

Я не понимаю, почему я получаю разные хэш -коды. Согласно документации Java, хэш -код списка будет создан так. < /P>

  int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
< /code>

Таким образом, порядок элементов в списке не должен играть роль. Если я попробую это с списком с примитивными датами, такими как String, он будет работать, но не с моим пользовательским датом. < /p>

У кого -то есть идея, почему он не работает? из PapermetAdata 
и конференции, вытекающих из конференций, в списке, с хэш -кодом участников в списке второго. И нет никакой разницы. Но если я сравню хэшкод полного списка, есть разница. Я понятия не имею, почему. Я беспомощен. < /P>

Возможно, кто -то может мне помочь. С уважением и заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/342 ... hash-codes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»