【发布时间】:2012-04-23 22:45:27
【问题描述】:
我的 hashmap 有这样的键:'2+4+5' , '653+65+1324+75'.(由 + 号分隔的整数值)
什么可能是一个好的哈希码和equals方法,以便像'2 + 4 + 5','5 + 4 + 2','4 + 5 + 2'这样的键......(2,4的所有排列,5) 应该返回相同的哈希码值,equals 应该返回 true。
我打算取键中的整数值,对它们进行排序,将它们按升序放入一个字符串中,然后调用该字符串的 hashcode 和 equals 方法。假设如果我有“5+2+4”,那么我会将其更改为“245”并调用字符串 hashcode 和 equals 方法。但这将是一项昂贵的操作,因为每次我都必须进行排序。并且 hashmap 中的所有方法,例如 put,get... 都会再次变得昂贵
有没有其他方法可以在对数或线性时间内做到这一点......
【问题讨论】:
-
有一个“2+4+5”键似乎有点可疑——这真的是一个伪装的对象吗?如果是这样,写一个哈希码可能更自然。