package com.revolsys.collection.map; import java.util.Map; import java.util.Set; import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.collections4.set.MapBackedSet; import com.revolsys.util.HashEquals; public class CustomHashMap<K, V> extends HashedMap<K, V> { private static final long serialVersionUID = 1L; public static <T> Set<T> set(final HashEquals hashEquals) { final CustomHashMap<T, Void> map = new CustomHashMap<>(hashEquals); return MapBackedSet.mapBackedSet(map); } private final HashEquals hashEquals; public CustomHashMap(final HashEquals hashEquals) { this.hashEquals = hashEquals; } public CustomHashMap(final HashEquals hashEquals, final int initialCapacity) { super(initialCapacity); this.hashEquals = hashEquals; } public CustomHashMap(final HashEquals hashEquals, final int initialCapacity, final float loadFactor) { super(initialCapacity, loadFactor); this.hashEquals = hashEquals; } public CustomHashMap(final HashEquals hashEquals, final Map<? extends K, ? extends V> map) { super(map); this.hashEquals = hashEquals; } @Override protected int hash(final Object key) { return this.hashEquals.hashCode(key); } @Override protected boolean isEqualKey(final Object key1, final Object key2) { return this.hashEquals.equals(key1, key2); } }