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}