|
|
|
HashMap нужно ли переопределять хэшь код и equals для значений
|
|||
|---|---|---|---|
|
#18+
Допустим у меня есть Map<MyКеуObj1, MyEntityObj2> map = new HashMap<MyКеуObj1, MyEntityObj2>(); Исходя из внутреннего устройства мапы - индекс бакета куда будет помещена структура типа (MyКеуObj1.hashCode() ,MyObj1, MyEntityObj2) будет определен исходя из MyКеуObj1.hashCode() через нормализацию, то же самое когда мы будем извлекать обьект по ключю. Далее в бакете у нас связный список из (MyКеуObj1.hashCode() ,MyКеуObj1, MyEntityObj2) и мы опять таки ищем элемент в списке у которого MyКеуObj1.equals(Искомый ключ). Т.о хэш код вычисляеться только для ключа (MyКеуObj1), а для значения (MyEntityObj2) не вычисляеться, и не важно вставляем мы элемент или извлекаем, то же самое и для метода equals() - который срабатывает только для ключа, когда мы пробегаемся по линкед листу в бакете,чтобы найти нужный элемент. Правильно ли это? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 14:44:47 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2129922]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 292ms |
| total: | 417ms |

| 0 / 0 |
