Skip to content

Commit 47dc469

Browse files
committed
MapUtility -> MapGenerator with new system
1 parent 37c3353 commit 47dc469

File tree

1 file changed

+61
-32
lines changed

1 file changed

+61
-32
lines changed

src/main/java/xyz/srnyx/javautilities/MapUtility.java src/main/java/xyz/srnyx/javautilities/MapGenerator.java

+61-32
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,51 @@
66
import java.util.HashMap;
77
import java.util.List;
88
import java.util.Map;
9+
import java.util.TreeMap;
10+
import java.util.function.Supplier;
911

1012

1113
/**
1214
* A utility class for quickly generating {@link Map maps}
1315
*/
1416
@SuppressWarnings("DuplicatedCode")
15-
public class MapUtility {
17+
public class MapGenerator {
18+
/**
19+
* Default map generator for {@link HashMap}
20+
*/
21+
@NotNull public static final MapGenerator HASH_MAP = new MapGenerator(HashMap::new);
22+
/**
23+
* Default map generator for {@link TreeMap} (sorted)
24+
*/
25+
@NotNull public static final MapGenerator TREE_MAP = new MapGenerator(TreeMap::new);
26+
27+
/**
28+
* The supplier to use for generating maps
29+
*/
30+
@NotNull public final Supplier<Map<?, ?>> supplier;
31+
32+
/**
33+
* Constructs a new {@link MapGenerator} instance
34+
*
35+
* @param supplier {@link #supplier}
36+
*/
37+
public MapGenerator(@NotNull Supplier<Map<?, ?>> supplier) {
38+
this.supplier = supplier;
39+
}
40+
41+
/**
42+
* Generates a new empty map
43+
*
44+
* @return the generated map
45+
*
46+
* @param <T> the type of the keys
47+
* @param <G> the type of the values
48+
*/
49+
@NotNull
50+
public <T, G> Map<T, G> mapOf() {
51+
return (Map<T, G>) supplier.get();
52+
}
53+
1654
/**
1755
* Generates a map from a list of keys and a list of values
1856
*
@@ -25,8 +63,8 @@ public class MapUtility {
2563
* @param <G> the type of the values
2664
*/
2765
@NotNull
28-
public static <T, G> Map<T, G> mapOf(@NotNull List<T> keys, @NotNull List<G> values) {
29-
final Map<T, G> map = new HashMap<>();
66+
public <T, G> Map<T, G> mapOf(@NotNull List<T> keys, @NotNull List<G> values) {
67+
final Map<T, G> map = mapOf();
3068
for (int i = 0; i < keys.size(); i++) map.put(keys.get(i), values.get(i));
3169
return map;
3270
}
@@ -43,8 +81,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull List<T> keys, @NotNull List<G> val
4381
* @param <G> the type of the value
4482
*/
4583
@NotNull
46-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value) {
47-
final Map<T, G> map = new HashMap<>();
84+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value) {
85+
final Map<T, G> map = mapOf();
4886
map.put(key, value);
4987
return map;
5088
}
@@ -63,8 +101,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value) {
63101
* @param <G> the type of the values
64102
*/
65103
@NotNull
66-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2) {
67-
final Map<T, G> map = new HashMap<>();
104+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2) {
105+
final Map<T, G> map = mapOf();
68106
map.put(key, value);
69107
map.put(key2, value2);
70108
return map;
@@ -86,8 +124,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
86124
* @param <G> the type of the values
87125
*/
88126
@NotNull
89-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3) {
90-
final Map<T, G> map = new HashMap<>();
127+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3) {
128+
final Map<T, G> map = mapOf();
91129
map.put(key, value);
92130
map.put(key2, value2);
93131
map.put(key3, value3);
@@ -112,8 +150,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
112150
* @param <G> the type of the values
113151
*/
114152
@NotNull
115-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4) {
116-
final Map<T, G> map = new HashMap<>();
153+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4) {
154+
final Map<T, G> map = mapOf();
117155
map.put(key, value);
118156
map.put(key2, value2);
119157
map.put(key3, value3);
@@ -141,8 +179,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
141179
* @param <G> the type of the values
142180
*/
143181
@NotNull
144-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5) {
145-
final Map<T, G> map = new HashMap<>();
182+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5) {
183+
final Map<T, G> map = mapOf();
146184
map.put(key, value);
147185
map.put(key2, value2);
148186
map.put(key3, value3);
@@ -173,8 +211,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
173211
* @param <G> the type of the values
174212
*/
175213
@NotNull
176-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6) {
177-
final Map<T, G> map = new HashMap<>();
214+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6) {
215+
final Map<T, G> map = mapOf();
178216
map.put(key, value);
179217
map.put(key2, value2);
180218
map.put(key3, value3);
@@ -208,8 +246,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
208246
* @param <G> the type of the values
209247
*/
210248
@NotNull
211-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7) {
212-
final Map<T, G> map = new HashMap<>();
249+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7) {
250+
final Map<T, G> map = mapOf();
213251
map.put(key, value);
214252
map.put(key2, value2);
215253
map.put(key3, value3);
@@ -246,8 +284,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
246284
* @param <G> the type of the values
247285
*/
248286
@NotNull
249-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7, @NotNull T key8, @Nullable G value8) {
250-
final Map<T, G> map = new HashMap<>();
287+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7, @NotNull T key8, @Nullable G value8) {
288+
final Map<T, G> map = mapOf();
251289
map.put(key, value);
252290
map.put(key2, value2);
253291
map.put(key3, value3);
@@ -287,8 +325,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
287325
* @param <G> the type of the values
288326
*/
289327
@NotNull
290-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7, @NotNull T key8, @Nullable G value8, @NotNull T key9, @Nullable G value9) {
291-
final Map<T, G> map = new HashMap<>();
328+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7, @NotNull T key8, @Nullable G value8, @NotNull T key9, @Nullable G value9) {
329+
final Map<T, G> map = mapOf();
292330
map.put(key, value);
293331
map.put(key2, value2);
294332
map.put(key3, value3);
@@ -331,8 +369,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
331369
* @param <G> the type of the values
332370
*/
333371
@NotNull
334-
public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7, @NotNull T key8, @Nullable G value8, @NotNull T key9, @Nullable G value9, @NotNull T key10, @Nullable G value10) {
335-
final Map<T, G> map = new HashMap<>();
372+
public <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull T key2, @Nullable G value2, @NotNull T key3, @Nullable G value3, @NotNull T key4, @Nullable G value4, @NotNull T key5, @Nullable G value5, @NotNull T key6, @Nullable G value6, @NotNull T key7, @Nullable G value7, @NotNull T key8, @Nullable G value8, @NotNull T key9, @Nullable G value9, @NotNull T key10, @Nullable G value10) {
373+
final Map<T, G> map = mapOf();
336374
map.put(key, value);
337375
map.put(key2, value2);
338376
map.put(key3, value3);
@@ -345,13 +383,4 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
345383
map.put(key10, value10);
346384
return map;
347385
}
348-
349-
/**
350-
* Constructs a new {@link MapUtility} instance (illegal)
351-
*
352-
* @throws UnsupportedOperationException if this class is instantiated
353-
*/
354-
private MapUtility() {
355-
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
356-
}
357386
}

0 commit comments

Comments
 (0)