Если у вас есть map:{string,map:{string,thing}}
(намеренно , а не , использующий синтаксис Java, чтобы избежать всего бизнеса Java1.4 / Java5), вам также следует подумать о том, стоит ли вместо этого моделировать его как map:{tuple:{string,string},thing}
,Если преобладают многоуровневые поиски, то это хорошее изменение, которое нужно сделать (при условии, что вы реализуете хороший tuple
, который правильно выполняет equals()
и hashCode()
), но если вы выполняете много операций вставки и удаления, тогда это менее полезно.
Интеллект в hashCode, вероятно, означает просто придумать разумный способ смешать биты из hashCodes содержимого вместе.Если ожидается, что значения членов будут из непересекающихся наборов (например, имен и профессий), тогда вы можете просто XOR их вместе - несовершенные, но дешевые и быстрые - но если у вас меньше контроля / уверенности, то вам нужно сделать что-то еще, какхорошо (например, поверните биты одного из значений до XOR).