我有一个类型为HashMap<Long, ArrayList<String>>
的散列表。重写HashMap实现的equals()和hashCode()方法
我需要重写equals()和hashCode()方法来获得性能。在这种情况下,最重要的功能应该是什么?
我知道确切的没有。的元素我会放在HashMap中,因此我已经使用了initial Capacity = (No. Of Elements that will be put)/ 0.75
其中0.75 =>加载因子, 这是正确的吗?
我有一个类型为HashMap<Long, ArrayList<String>>
的散列表。重写HashMap实现的equals()和hashCode()方法
我需要重写equals()和hashCode()方法来获得性能。在这种情况下,最重要的功能应该是什么?
我知道确切的没有。的元素我会放在HashMap中,因此我已经使用了initial Capacity = (No. Of Elements that will be put)/ 0.75
其中0.75 =>加载因子, 这是正确的吗?
的HashMap
的equals(..)
方法具有线性复杂度(当你使用一个对象作为一个HashMap
关键,你应该确保它有那些方法一致的实现您是在正确的)。 ArrayList
也是如此。我认为它不会更好 - 你必须比较每个元素
你可以假设Java库的对象,如Long
,ArrayList
和String
有equals()
和hashCode()
正确的实现。
为什么你认为HashMap上的equals()和hashCode()方法是性能瓶颈?这些课程经过了充分测试,并在各地使用。 – Jeremy 2011-03-10 23:28:49
对于所有Map和Collection实现的'equals'和'hashCode'方法都有非常具体的合约。正如其他人所说的,你不会比合同中现有的实现更好。 – ColinD 2011-03-10 23:29:07