HashMaps
This commit is contained in:
156
src/main/java/ghast/HashMaps.java
Normal file
156
src/main/java/ghast/HashMaps.java
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
package ghast;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание Map как в Java 9+.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("DuplicatedCode")
|
||||||
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public final class HashMaps {
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of() {
|
||||||
|
return new HashMap<>(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
put(k5, v5);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5,
|
||||||
|
K k6, V v6) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
put(k5, v5);
|
||||||
|
put(k6, v6);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5,
|
||||||
|
K k6, V v6, K k7, V v7) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
put(k5, v5);
|
||||||
|
put(k6, v6);
|
||||||
|
put(k7, v7);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5,
|
||||||
|
K k6, V v6, K k7, V v7, K k8, V v8) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
put(k5, v5);
|
||||||
|
put(k6, v6);
|
||||||
|
put(k7, v7);
|
||||||
|
put(k8, v8);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5,
|
||||||
|
K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
put(k5, v5);
|
||||||
|
put(k6, v6);
|
||||||
|
put(k7, v7);
|
||||||
|
put(k8, v8);
|
||||||
|
put(k9, v9);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5,
|
||||||
|
K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) {
|
||||||
|
return new HashMap<K, V>() {{
|
||||||
|
put(k1, v1);
|
||||||
|
put(k2, v2);
|
||||||
|
put(k3, v3);
|
||||||
|
put(k4, v4);
|
||||||
|
put(k5, v5);
|
||||||
|
put(k6, v6);
|
||||||
|
put(k7, v7);
|
||||||
|
put(k8, v8);
|
||||||
|
put(k9, v9);
|
||||||
|
put(k10, v10);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
public static <K, V> Map<K, V> ofEntries(Map.Entry<? extends K, ? extends V>... entries) {
|
||||||
|
if (entries == null || entries.length == 0) {
|
||||||
|
return of();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<K, V> map = new HashMap<>(entries.length);
|
||||||
|
for (Map.Entry<? extends K, ? extends V> entry : entries) {
|
||||||
|
map.put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <K, V> Map.Entry<K, V> entry(K k, V v) {
|
||||||
|
return new SimpleEntry<>(k, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@EqualsAndHashCode
|
||||||
|
private static class SimpleEntry<K, V> implements Map.Entry<K, V> {
|
||||||
|
|
||||||
|
private final K key;
|
||||||
|
private V value;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user