/** * Return true if the keys in the specified entry are equal to the specified keys. * * @param entry entry * @param key1 first key * @param key2 second key * @param key3 third key * @param key4 fourth key * @return true if the keys in the specified entry are equal to the specified keys */ private boolean isEqualKey( final HashEntry<QuaternaryKey<K1, K2, K3, K4>, V> entry, final K1 key1, final K2 key2, final K3 key3, final K4 key4) { QuaternaryKey<K1, K2, K3, K4> key = entry.getKey(); return (key1 == null ? key.getFirstKey() == null : key1.equals(key.getFirstKey())) && (key2 == null ? key.getSecondKey() == null : key2.equals(key.getSecondKey())) && (key3 == null ? key.getThirdKey() == null : key3.equals(key.getThirdKey())) && (key4 == null ? key.getFourthKey() == null : key4.equals(key.getFourthKey())); }
/** * Hash the specified keys. * * @param key1 first key * @param key2 second key * @param key3 third key * @param key4 fourth key * @return hash code for the specified keys */ private int hash(final K1 key1, final K2 key2, final K3 key3, final K4 key4) { int h = 0; if (key1 != null) { h ^= key1.hashCode(); } if (key2 != null) { h ^= key2.hashCode(); } if (key3 != null) { h ^= key3.hashCode(); } if (key4 != null) { h ^= key4.hashCode(); } h += ~(h << 9); h ^= (h >>> 14); h += (h << 4); h ^= (h >>> 10); return h; }