IntMap.java

  1package de.gultsch.common;
  2
  3import androidx.annotation.NonNull;
  4import androidx.annotation.Nullable;
  5import com.google.common.base.Objects;
  6import com.google.common.collect.ImmutableMap;
  7import java.util.Collection;
  8import java.util.Map;
  9import java.util.Set;
 10
 11public class IntMap<E> implements Map<E, Integer> {
 12
 13    private final ImmutableMap<E, Integer> inner;
 14
 15    public IntMap(ImmutableMap<E, Integer> inner) {
 16        this.inner = inner;
 17    }
 18
 19    @Override
 20    public int size() {
 21        return this.inner.size();
 22    }
 23
 24    @Override
 25    public boolean isEmpty() {
 26        return this.inner.isEmpty();
 27    }
 28
 29    @Override
 30    public boolean containsKey(@Nullable Object key) {
 31        return this.inner.containsKey(key);
 32    }
 33
 34    @Override
 35    public boolean containsValue(@Nullable Object value) {
 36        return this.inner.containsValue(value);
 37    }
 38
 39    @Nullable
 40    @Override
 41    public Integer get(@Nullable Object key) {
 42        return this.inner.get(key);
 43    }
 44
 45    public int getInt(@Nullable E key) {
 46        final var value = this.inner.get(key);
 47        return value == null ? Integer.MIN_VALUE : value;
 48    }
 49
 50    @Nullable
 51    @Override
 52    public Integer put(E key, Integer value) {
 53        return this.inner.put(key, value);
 54    }
 55
 56    @Nullable
 57    @Override
 58    public Integer remove(@Nullable Object key) {
 59        return this.inner.remove(key);
 60    }
 61
 62    @Override
 63    public void putAll(@NonNull Map<? extends E, ? extends Integer> m) {
 64        this.inner.putAll(m);
 65    }
 66
 67    @Override
 68    public void clear() {
 69        this.inner.clear();
 70    }
 71
 72    @NonNull
 73    @Override
 74    public Set<E> keySet() {
 75        return this.inner.keySet();
 76    }
 77
 78    @NonNull
 79    @Override
 80    public Collection<Integer> values() {
 81        return this.inner.values();
 82    }
 83
 84    @NonNull
 85    @Override
 86    public Set<Entry<E, Integer>> entrySet() {
 87        return this.inner.entrySet();
 88    }
 89
 90    @Override
 91    public boolean equals(Object o) {
 92        if (!(o instanceof IntMap<?> intMap)) return false;
 93        return Objects.equal(inner, intMap.inner);
 94    }
 95
 96    @Override
 97    public int hashCode() {
 98        return Objects.hashCode(inner);
 99    }
100}