4 ms·
doesn't this force you to define a comparator for everything though?
by dajohnson89 7y ago
doesn't this force you to define a comparator for everything though?
- _greim_ 7y agoAs opposed to defining a hash code for everything, yes. Parent asserts that writing obviously-correct comparators is easier.
- 91aintprime 7y agofunny enough, a hash code defines an order on a set
- tempguy9999 7y agoIs it in any sense a useful order though? You can assign any order to any set of objects, but you'd want it to be useful. A hash - the more hash-ey it is, the less the order means AFAICS.
- n3k5 7y agoFor the purpose of making a tree data structure, all linear orderings would be equally useful. Hashing only provides a partial order, so it's important to choose a hash function that won't assign the same hash to large batches of items. But it only needs to have this property for hashes of one particular size, whereas a hash map requires a function that behaves well for a variety of hash sizes. So there's an opportunity for using a cheaper hash function.
- LgWoodenBadger 7y agoIDEs have had good equals/hashcode auto-generation mechanisms for years. Java itself introduced Objects.hash(Object...) in 1.7 https://docs.oracle.com/javase/7/docs/api/java/util/Objects.html#hash(java.lang.Object...) https://docs.oracle.com/javase/7/docs/api/java/util/Objects.... It's never really been an issue at all to implement equals/hashcode, which you're required to do for effectively all Collections-based usage anyway.