Why does hashcode() returns an integer and not lon

2020-04-11 13:46发布

In java, hashcode() method, returns integer instead of long. Is there any specific reason?

2条回答
家丑人穷心不美
2楼-- · 2020-04-11 14:40

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.

查看更多
▲ chillily
3楼-- · 2020-04-11 14:50

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.

查看更多
登录 后发表回答