All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.zenwave360.generator.utils.Maps Maven / Gradle / Ivy

package io.zenwave360.generator.utils;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * Mutable version of {@link java.util.Map} static methods and other utilities.
 */
public interface Maps {

    static  Map of(K key, V value, Object... keyValues) {
        Map map = new LinkedHashMap<>();
        map.put(key, value);
        if (keyValues != null) {
            int i = 0;
            while (i < keyValues.length) {
                K k = (K) keyValues[i++];
                V v = (V) keyValues[i++];
                map.put(k, v);
            }
        }
        return map;
    }

    static Map copy(Map source) {
        return (Map) deepCopy((Object) source);
    }

    private static Object deepCopy(Object source) {
        if (source instanceof Map) {
            source = new HashMap<>((Map) source);
            ((HashMap) source).entrySet().forEach(e -> e.setValue(deepCopy(e.getValue())));
        } else if (source instanceof List) {
            source = ((List) source).stream().map(e -> deepCopy(e));
        }
        return source;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy