package com.aol.micro.server.utility;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class HashMapBuilder {
public static <K, V> Map<K, V> of() {
return Collections.unmodifiableMap(new HashMap<>());
}
public static <K, V> Map<K, V> of(K key, V value) {
return Collections.unmodifiableMap(new Builder<K, V>(key, value).build());
}
public static <K, V> Map<K, V> of(K key, V value,K key1, V value1) {
return Collections.unmodifiableMap(new Builder<K, V>(key, value).put(key1, value1).build());
}
public static <K, V> Map<K, V> of(K key, V value,K key1, V value1,K key2, V value2) {
return Collections.unmodifiableMap(new Builder<K, V>(key, value).put(key, value, key1, value1, key2, value2).build());
}
public static <K, V> Map<K, V> of(K key, V value,K key1, V value1,K key2, V value2,K key3, V value3) {
return Collections.unmodifiableMap(new Builder<K, V>(key, value).put(key, value, key1, value1, key2, value2,key3, value3).build());
}
public static <K, V> Builder<K, V> from(Map<K,V> map) {
return new Builder<K, V>(map);
}
public static <K, V> Builder<K, V> map(K key, V value) {
return new Builder<K, V>(key, value);
}
public static <K, V> Builder<K, V> map(K key, V value,K key1, V value1) {
return new Builder<K, V>(key, value).put(key1, value1);
}
public static <K, V> Builder<K, V> map(K key, V value,K key1, V value1,K key2, V value2) {
return new Builder<K, V>(key, value).put(key, value, key1, value1, key2, value2);
}
public static <K, V> Builder<K, V> map(K key, V value,K key1, V value1,K key2, V value2,K key3, V value3) {
return new Builder<K, V>(key, value).put(key, value, key1, value1, key2, value2,key3, value3);
}
public static final class Builder<K, V> {
private final Map<K, V> build;
public Builder(K key, V value) {
build = new HashMap<K, V>();
build.put(key, value);
}
public Builder(Map<K,V> map) {
build = new HashMap<K, V>(map);
}
public Builder<K, V> putAll(Map<K,V> map){
build.putAll(map);
return this;
}
public Builder<K, V> put(K key, V value) {
build.put(key, value);
return this;
}
public Builder<K, V> put(K key, V value,K key1, V value1) {
build.put(key, value);
build.put(key1, value1);
return this;
}
public Builder<K, V> put(K key, V value,K key1, V value1,K key2, V value2) {
build.put(key, value);
build.put(key1, value1);
build.put(key2, value2);
return this;
}
public Builder<K, V> put(K key, V value,K key1, V value1,K key2, V value2,K key3, V value3) {
build.put(key, value);
build.put(key1, value1);
build.put(key2, value2);
build.put(key3, value3);
return this;
}
public Map<K, V> build() {
return build;
}
}
}