6
6
import java .util .HashMap ;
7
7
import java .util .List ;
8
8
import java .util .Map ;
9
+ import java .util .TreeMap ;
10
+ import java .util .function .Supplier ;
9
11
10
12
11
13
/**
12
14
* A utility class for quickly generating {@link Map maps}
13
15
*/
14
16
@ 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
+
16
54
/**
17
55
* Generates a map from a list of keys and a list of values
18
56
*
@@ -25,8 +63,8 @@ public class MapUtility {
25
63
* @param <G> the type of the values
26
64
*/
27
65
@ 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 ();
30
68
for (int i = 0 ; i < keys .size (); i ++) map .put (keys .get (i ), values .get (i ));
31
69
return map ;
32
70
}
@@ -43,8 +81,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull List<T> keys, @NotNull List<G> val
43
81
* @param <G> the type of the value
44
82
*/
45
83
@ 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 ();
48
86
map .put (key , value );
49
87
return map ;
50
88
}
@@ -63,8 +101,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value) {
63
101
* @param <G> the type of the values
64
102
*/
65
103
@ 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 ();
68
106
map .put (key , value );
69
107
map .put (key2 , value2 );
70
108
return map ;
@@ -86,8 +124,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
86
124
* @param <G> the type of the values
87
125
*/
88
126
@ 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 ();
91
129
map .put (key , value );
92
130
map .put (key2 , value2 );
93
131
map .put (key3 , value3 );
@@ -112,8 +150,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
112
150
* @param <G> the type of the values
113
151
*/
114
152
@ 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 ();
117
155
map .put (key , value );
118
156
map .put (key2 , value2 );
119
157
map .put (key3 , value3 );
@@ -141,8 +179,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
141
179
* @param <G> the type of the values
142
180
*/
143
181
@ 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 ();
146
184
map .put (key , value );
147
185
map .put (key2 , value2 );
148
186
map .put (key3 , value3 );
@@ -173,8 +211,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
173
211
* @param <G> the type of the values
174
212
*/
175
213
@ 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 ();
178
216
map .put (key , value );
179
217
map .put (key2 , value2 );
180
218
map .put (key3 , value3 );
@@ -208,8 +246,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
208
246
* @param <G> the type of the values
209
247
*/
210
248
@ 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 ();
213
251
map .put (key , value );
214
252
map .put (key2 , value2 );
215
253
map .put (key3 , value3 );
@@ -246,8 +284,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
246
284
* @param <G> the type of the values
247
285
*/
248
286
@ 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 ();
251
289
map .put (key , value );
252
290
map .put (key2 , value2 );
253
291
map .put (key3 , value3 );
@@ -287,8 +325,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
287
325
* @param <G> the type of the values
288
326
*/
289
327
@ 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 ();
292
330
map .put (key , value );
293
331
map .put (key2 , value2 );
294
332
map .put (key3 , value3 );
@@ -331,8 +369,8 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
331
369
* @param <G> the type of the values
332
370
*/
333
371
@ 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 ();
336
374
map .put (key , value );
337
375
map .put (key2 , value2 );
338
376
map .put (key3 , value3 );
@@ -345,13 +383,4 @@ public static <T, G> Map<T, G> mapOf(@NotNull T key, @Nullable G value, @NotNull
345
383
map .put (key10 , value10 );
346
384
return map ;
347
385
}
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
- }
357
386
}
0 commit comments