@Nonnull @Override public Equivalence<Entry<Short, Long>> equivalence() { return Equivalence.entryEquivalence( Equivalence.<Short>defaultEquality() , Equivalence.<Long>defaultEquality() ); }
@Override boolean keyEquals(@Nonnull E a, @Nullable E b) { return b != null && equivalence.equivalent(a, b); }
@Override int keyHashCode(@Nonnull E key) { return equivalence.hash(key); } }
@SuppressWarnings("unchecked") @Override @Nonnull public HashFloatObjMapFactory<V> withValueEquivalence( @Nonnull Equivalence<? super V> valueEquivalence) { if (valueEquivalence.equals(Equivalence.defaultEquality())) { return (HashFloatObjMapFactory<V>) this; } return new WithCustomValueEquivalence<V>(getHashConfig(), getDefaultExpectedSize() , (Equivalence<V>) valueEquivalence); }
@Override int nullableValueHashCode(@Nullable V value) { return valueEquivalence.nullableHash(value); }
@Override boolean nullableValueEquals(@Nullable V a, @Nullable V b) { return valueEquivalence.nullableEquivalent(a, b); }
int keySpecialHashCode(int hashCode) { hashCode = hashCode * 31 + getEquivalence().hashCode(); return hashCode * 31 + (isNullKeyAllowed() ? 1 : 0); } }
@SuppressWarnings("unchecked") @Override @Nonnull public HashDoubleObjMapFactory<V> withValueEquivalence( @Nonnull Equivalence<? super V> valueEquivalence) { if (valueEquivalence.equals(Equivalence.defaultEquality())) { return (HashDoubleObjMapFactory<V>) this; } return new WithCustomValueEquivalence<V>(getHashConfig(), getDefaultExpectedSize() , (Equivalence<V>) valueEquivalence); }
@Override int nullableValueHashCode(@Nullable V value) { return valueEquivalence.nullableHash(value); }
@Override boolean nullableValueEquals(@Nullable V a, @Nullable V b) { return valueEquivalence.nullableEquivalent(a, b); }
@Override public int hashCode() { int hashCode = keySpecialHashCode(commonHashCode()); hashCode = hashCode * 31 + getValueEquivalence().hashCode(); return hashCode; }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjLongMapFactory<K> withKeyEquivalence( @Nonnull Equivalence<? super K> keyEquivalence) { if (keyEquivalence.equals(Equivalence.defaultEquality())) { return (HashObjLongMapFactory<K>) this; } return new WithCustomKeyEquivalenceAndDefaultValue<K>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<K>) keyEquivalence, defaultValue); }
@Nonnull @Override public Equivalence<Entry<Byte, Integer>> equivalence() { return Equivalence.entryEquivalence( Equivalence.<Byte>defaultEquality() , Equivalence.<Integer>defaultEquality() ); }
@Override int keyHashCode(@Nonnull K key) { return keyEquivalence.hash(key); } }
@Override int nullableValueHashCode(@Nullable V value) { return valueEquivalence.nullableHash(value); }
@Override boolean nullableKeyEquals(@Nullable K a, @Nullable K b) { return keyEquivalence.nullableEquivalent(a, b); }
@Override boolean valueEquals(@Nonnull V a, @Nullable V b) { return b != null && valueEquivalence.equivalent(a, b); }
@Override public int hashCode() { int hashCode = keySpecialHashCode(commonHashCode()); hashCode = hashCode * 31 + getValueEquivalence().hashCode(); return hashCode; }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjDoubleMapFactory<K> withKeyEquivalence( @Nonnull Equivalence<? super K> keyEquivalence) { if (keyEquivalence.equals(Equivalence.defaultEquality())) { return (HashObjDoubleMapFactory<K>) this; } return new WithCustomKeyEquivalence<K>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<K>) keyEquivalence); }
@Nonnull @Override public Equivalence<Entry<Byte, Long>> equivalence() { return Equivalence.entryEquivalence( Equivalence.<Byte>defaultEquality() , Equivalence.<Long>defaultEquality() ); }