Re: System.identityHashCod считает не уникальный хеш
От: mkizub Литва http://symade.tigris.org
Дата: 11.10.10 20:34
Оценка: +1
Здравствуйте, AlxB, Вы писали:

AB>Здравствуйте,


AB>Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.


А в чём проблема-то?

AB>Кто нибудь почему это происходит?


Хеш-код не имеет никакого отношения к уникальности.
Разные объекты вполне могут иметь одинаковый хеш-код.
Он нужен чтоб объекты распихивать равномернее по хэш-таблицам, и больше ни для чего.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[7]: System.identityHashCod считает не уникальный хеш
От: gegMOPO4  
Дата: 15.10.10 09:56
Оценка: +1
AlxB wrote:
> Соответсвенно напрашивается вывод, что это что-то с приложением. Я не
> сильно знаком с этой областью, не подскажет как такое может быть?

1. Вы неправильно выводите в логи хеш. Получается одна и та же строка,
независимо от хеша.
2. Вы вместо хеша выводите какую-то ерунду, всё время одну и ту же.
3. Вы вычисляете хеш от одного и того же объекта (а не от разных компонент).
Возможно от null.

Остальные варианты имеют пренебрежимо малую вероятность.
Posted via RSDN NNTP Server 2.1 beta
System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 10:09
Оценка:
Здравствуйте,

Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.
Вот лог, формат [хеш] : obj.toString()

[070c070c] : com.nfs.dcdirect.swing.panel.DCDItemGroupSizingPanel[,0,0,200x489,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]
[070c070c] : com.nfs.dcdirect.swing.DCDLabel[,447,36,224x14,alignmentX=0.0,alignmentY=0.0,border=,flags=25165824,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=RIGHT,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Gross Premiums YTD: ,verticalAlignment=CENTER,verticalTextPosition=CENTER]

Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():

javax.swing.plaf.BorderUIResource$EmptyBorderUIResource@15e215e2

Кто нибудь почему это происходит?
Спасибо.
.
Re: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 10:12
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Кто нибудь почему это происходит?

AB>Спасибо.
ОS, версия JVM и вендор.
Re: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 10:16
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():


Андроид?
Re[2]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 10:20
Оценка:
Здравствуйте, Blazkowicz, Вы писали:


B>ОS, версия JVM и вендор.


OS: WinXP
ver: JRE 1.6.0_20 раньше на 1.6.0_06 то же было
стандартная SUN'овская

Спасибо.
.
Re: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 10:40
Оценка:
Здравствуйте, AlxB, Вы писали:

Он не очень-то уникальный http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6809470

AB>Столкнулся со следующий проблемой, System.identityHashCode выдает одинаковый хеш для контролов одновременно находящихся на форме.

AB>Вот лог, формат [хеш] : obj.toString()
Может у вас с выводом что, а не с кодами?


AB>Что мне показалось странным — это то что хеш состоит из 2х одинаковых частей по 4 байта причем для всех контролов. Вот например еще toString():

По 2 байта кстати.

AB>javax.swing.plaf.BorderUIResource$EmptyBorderUIResource@15e215e2

Это IDE так показывает?
Re[2]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 10:52
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, AlxB, Вы писали:


B>Он не очень-то уникальный http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6809470

Да, конечно. Но, как я сказал, меня смутила симметрия в коде (по 2 байта вы правы )


B>Может у вас с выводом что, а не с кодами?

B>Это IDE так показывает?

Нет это логирование с выводом все в порядке.
.
Re[3]: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 11:28
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Нет это логирование с выводом все в порядке.

Вы явно System.identityHashCode там вызываете и потом сами в hex форматируете?
Re[4]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 06.10.10 14:24
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

AB>>Нет это логирование с выводом все в порядке.

B>Вы явно System.identityHashCode там вызываете и потом сами в hex форматируете?
Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что
такой элемент уже есть.
.
Re[5]: System.identityHashCod считает не уникальный хеш
От: Blazkowicz Россия  
Дата: 06.10.10 15:05
Оценка:
Здравствуйте, AlxB, Вы писали:

AB>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что

AB>такой элемент уже есть.
Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21
Re[6]: System.identityHashCod считает не уникальный хеш
От: gegMOPO4  
Дата: 06.10.10 17:00
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, AlxB, Вы писали:


AB>>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что

AB>>такой элемент уже есть.
B>Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21

Я так подозреваю, речь идёт об одном и том же компоненте. Например, везде пытаются считать хеш не компонента, а родителя. Или какой-то константы, вроде Boolean.TRUE. Или спутали имена локальной переменной и члена класса.
Re[6]: System.identityHashCod считает не уникальный хеш
От: AlxB Украина  
Дата: 15.10.10 07:00
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, AlxB, Вы писали:


AB>>Да, именно так, кроме того я этот хеш пытаюсь поместить в Hashtable и получаю exception что

AB>>такой элемент уже есть.
B>Мистика. Это со всеми объектами или только компанентами? Можно ли как-то получить тестовый пример кода? У меня большое Swing приложение. Подобных странностей не наблюдаю. Java 1.6.0_u21

К сожалению у меня очень ограниченные возможности по доступу к приложению.
Вот, что мне удалось выяснить. Добавил я отладочный вывод к SwingSet2 и попросил запустить на том же PC, так там все в порядке с hash. Соответсвенно напрашивается вывод, что это что-то с приложением.
Я не сильно знаком с этой областью, не подскажет как такое может быть?
Есть ли какой-то менеджер памяти, который можно переопределить для своего приложения (насколько я понял identityHashCod возвращает референс на память где объект находится)?
Либо как то переопределить поведение System.identityHashCod?
Либо еще что-то, что нужно проверить. Будет интересно узнать любые идеи.

Спасибо,
.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.