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

one.xingyi.helpers.MapHelpers Maven / Gradle / Ivy

There is a newer version: 1.5.9
Show newest version
package one.xingyi.helpers;

import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;

public interface MapHelpers {
    static  Map map(Map map, BiFunction fn) {
        Map result = new HashMap<>();
        for (Map.Entry entry : map.entrySet())
            result.put(entry.getKey(), fn.apply(entry.getKey(), entry.getValue()));
        return result;
    }

    static  String jsonPrint(String separator, Map map, BiFunction fn) {
        StringBuilder sb = new StringBuilder();
        sb.append("{\n");
        List list = new ArrayList<>(map.keySet());
        Collections.sort(list);
        int maxLength = list.stream().mapToInt(String::length).max().orElse(0) + 2;
        for (String key : list) {
            if (sb.length() > 2) {sb.append(','); sb.append(separator);} ;
            sb.append("  ");
            sb.append(String.format("%-" + maxLength + "s", StringHelper.doubleQuote.apply(key)));
            sb.append(":");
            sb.append(fn.apply(key, map.get(key)));
        }
        sb.append("\n}");
        return sb.toString();
    }

    static  V getOrAdd(Map map, K key, Supplier fn) {
        V result = map.get(key);
        if (result == null) {
            V value = fn.get();
            map.put(key, value);
            return value;
        }
        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy