@SuppressWarnings("unchecked") @Override @Nonnull public HashObjObjMapFactory<K, V> withValueEquivalence( @Nonnull Equivalence<? super V> valueEquivalence) { if (valueEquivalence.equals(Equivalence.defaultEquality())) { return (HashObjObjMapFactory<K, V>) this; } return new WithCustomValueEquivalence<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<V>) valueEquivalence); }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjObjMapFactory<K, V> withValueEquivalence( @Nonnull Equivalence<? super V> valueEquivalence) { if (valueEquivalence.equals(Equivalence.defaultEquality())) { return (HashObjObjMapFactory<K, V>) this; } return new WithCustomValueEquivalence<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<V>) valueEquivalence); }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjObjMapFactory<K, V> withValueEquivalence( @Nonnull Equivalence<? super V> valueEquivalence) { if (valueEquivalence.equals(Equivalence.defaultEquality())) return new QHashParallelKVObjObjMapFactoryImpl<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed()); if (valueEquivalence.equals(this.valueEquivalence)) return (HashObjObjMapFactory<K, V>) this; return new WithCustomValueEquivalence<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<V>) valueEquivalence); }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjObjMapFactory<K, V> withKeyEquivalence( @Nonnull Equivalence<? super K> keyEquivalence) { if (keyEquivalence.equals(Equivalence.defaultEquality())) return new WithCustomValueEquivalence<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), valueEquivalence); if (keyEquivalence.equals(this.keyEquivalence)) { return (HashObjObjMapFactory<K, V>) this; } return new WithCustomEquivalences<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<K>) keyEquivalence, valueEquivalence); }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjObjMapFactory<K, V> withKeyEquivalence( @Nonnull Equivalence<? super K> keyEquivalence) { if (keyEquivalence.equals(Equivalence.defaultEquality())) return new WithCustomValueEquivalence<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), valueEquivalence); if (keyEquivalence.equals(this.keyEquivalence)) { return (HashObjObjMapFactory<K, V>) this; } return new WithCustomEquivalences<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<K>) keyEquivalence, valueEquivalence); }
@SuppressWarnings("unchecked") @Override @Nonnull public HashObjObjMapFactory<K, V> withValueEquivalence( @Nonnull Equivalence<? super V> valueEquivalence) { if (valueEquivalence.equals(Equivalence.defaultEquality())) return new QHashParallelKVObjObjMapFactoryImpl<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed()); if (valueEquivalence.equals(this.valueEquivalence)) return (HashObjObjMapFactory<K, V>) this; return new WithCustomValueEquivalence<K, V>(getHashConfig(), getDefaultExpectedSize() , isNullKeyAllowed(), (Equivalence<V>) valueEquivalence); }
@Override HashObjObjMapFactory<K, V> qHashLikeThisWith(HashConfig hashConf, int defaultExpectedSize, boolean isNullKeyAllowed ) { return new QHashParallelKVObjObjMapFactoryImpl.WithCustomValueEquivalence<K, V>( hashConf, defaultExpectedSize, isNullKeyAllowed , valueEquivalence); } @Override
@Override HashObjObjMapFactory<K, V> qHashLikeThisWith(HashConfig hashConf, int defaultExpectedSize, boolean isNullKeyAllowed ) { return new QHashParallelKVObjObjMapFactoryImpl.WithCustomValueEquivalence<K, V>( hashConf, defaultExpectedSize, isNullKeyAllowed , valueEquivalence); } @Override
@Override HashObjObjMapFactory<K, V> qHashLikeThisWith(HashConfig hashConf, int defaultExpectedSize, boolean isNullKeyAllowed ) { return new QHashParallelKVObjObjMapFactoryImpl.WithCustomValueEquivalence<K, V>( hashConf, defaultExpectedSize, isNullKeyAllowed , valueEquivalence); } @Override
@Override HashObjObjMapFactory<K, V> thisWith(HashConfig hashConf, int defaultExpectedSize, boolean isNullKeyAllowed ) { return new WithCustomValueEquivalence<K, V>(hashConf, defaultExpectedSize, isNullKeyAllowed , valueEquivalence); }
@Override HashObjObjMapFactory<K, V> qHashLikeThisWith(HashConfig hashConf, int defaultExpectedSize, boolean isNullKeyAllowed ) { return new QHashParallelKVObjObjMapFactoryImpl.WithCustomValueEquivalence<K, V>( hashConf, defaultExpectedSize, isNullKeyAllowed , valueEquivalence); } @Override
@Override HashObjObjMapFactory<K, V> thisWith(HashConfig hashConf, int defaultExpectedSize, boolean isNullKeyAllowed ) { return new WithCustomValueEquivalence<K, V>(hashConf, defaultExpectedSize, isNullKeyAllowed , valueEquivalence); }