In java, hashcode() method, returns integer instead of long. Is there any specific reason?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
This question already has answers here:
Closed 2 years ago.
回答1:
Well, one good reason is that the hashCode
based data structures (HashSet
, HashMap
) use an array to store the bins, and arrays are limited to int
indices. You will gain nothing by a long
hashCode()
if you must map it to an int
array index.
回答2:
Using the hashCode is to have N buckets where the hashCode % N determines the bucket of elements, hopefully being 1 (no conflicting hashCodes).
For N, for the hash code, an int is entirely sufficient; indeed one needs to have most variety in the lower bits; having a long without using the higher bits (when N would be a power of 2), would be counter productive.
Speed of course is a requirement too: int being slightly better on the final CPU.