Если у вас есть map:{string,map:{string,thing}}
(преднамеренно не с использованием синтаксиса Java, чтобы избежать всего бизнеса Java1.4/Java5), тогда вы должны также подумать, следует ли вам вместо этого моделировать это как map:{tuple:{string,string},thing}
. Если доминирует многоуровневый поиск, то это хорошее изменение, чтобы сделать (при условии, что вы реализуете хороший tuple
, который правильно выполняет equals()
и hashCode()
разумно), но если вы делаете много вложений и удалений, то это не так хорошо.
Интеллект в hashCode, вероятно, означает просто придумать разумный способ смешивания бит из хэш-кодов содержимого вместе. Если предполагается, что значения членов из непересекающихся множеств (например, имена и профессии), то вы можете просто имитировать их вместе - несовершенными, но дешевыми и быстрыми, но если у вас меньше контроля/уверенности, тогда вам нужно сделать что-то еще, как (например, вращать биты одного из значений до XOR).
С какой стороны вам нужно быть картой? Собираетесь ли вы с карты на объект, объект на карту или на карту? – MikeD
Не можете ли вы просто сделать карту? Или вы хотите сделать что-то вроде map.put (key1, key2, value)? –
Dave
Не думаю, что это слишком актуально, но мне любопытно: какая компания/индустрия (как вам было удобно говорить) все еще требует Java 1.4? Даже Java 5 уже давно переполнена. Java 1.4 был EOLd уже почти 2 года. –