MapHelper.java 2.77 KB
Newer Older
yanzg's avatar
yanzg committed
1 2
package com.yanzuoguang.util.helper;

yanzg's avatar
yanzg committed
3
import java.util.ArrayList;
yanzg's avatar
yanzg committed
4 5 6 7 8 9
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapHelper {

yanzg's avatar
yanzg committed
10 11 12
    /**
     * 将一个对象列表转换为HashMap
     *
yanzg's avatar
yanzg committed
13
     * @param list 需要转换的列表
yanzg's avatar
yanzg committed
14 15 16 17 18
     * @param <T>
     * @return
     */
    public static <T extends MapKey> Map<String, T> getMap(List<T> list) {
        Map<String, T> map = new HashMap<>();
yanzg's avatar
yanzg committed
19 20 21 22 23
        if (list != null) {
            for (T item : list) {
                String key = item.getKey(item);
                map.put(key, item);
            }
yanzg's avatar
yanzg committed
24 25 26 27
        }
        return map;
    }

yanzg's avatar
yanzg committed
28 29 30 31 32 33 34 35 36 37
    /**
     * 将一个对象列表转换为HashMap
     *
     * @param list  需要转换的列表
     * @param proxy 获取主键的函数
     * @param <T>
     * @return
     */
    public static <T extends Object> Map<String, T> getMap(List<T> list, MapKey<T> proxy) {
        Map<String, T> map = new HashMap<>();
yanzg's avatar
yanzg committed
38 39 40 41 42
        if (list != null) {
            for (T item : list) {
                String key = proxy.getKey(item);
                map.put(key, item);
            }
yanzg's avatar
yanzg committed
43 44 45 46
        }
        return map;
    }

yanzg's avatar
yanzg committed
47 48 49 50 51 52 53 54 55
    /**
     * 将一个对象列表转换为HashMap
     *
     * @param list 需要转换的列表
     * @param <T>
     * @return
     */
    public static <T extends MapKey> List<String> getKeys(List<T> list) {
        List<String> to = new ArrayList<>();
yanzg's avatar
yanzg committed
56 57 58 59 60 61
        if (list != null) {
            for (T item : list) {
                String key = item.getKey(item);
                if (!to.contains(key)) {
                    to.add(key);
                }
yanzg's avatar
yanzg committed
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
            }
        }
        return to;
    }

    /**
     * 将一个对象列表转换为HashMap
     *
     * @param list  需要转换的列表
     * @param proxy 获取主键的函数
     * @param <T>
     * @return
     */
    public static <T extends Object> List<String> getKeys(List<T> list, MapKey<T> proxy) {
        List<String> to = new ArrayList<>();
yanzg's avatar
yanzg committed
77 78 79 80 81 82
        if (list != null) {
            for (T item : list) {
                String key = proxy.getKey(item);
                if (!to.contains(key)) {
                    to.add(key);
                }
yanzg's avatar
yanzg committed
83 84 85 86 87
            }
        }
        return to;
    }

yanzg's avatar
yanzg committed
88 89 90 91 92 93 94 95
    /**
     * 一个获取对象关键字的处理函数
     *
     * @param <T>
     */
    public interface MapKey<T> {
        String getKey(T from);
    }
yanzg's avatar
yanzg committed
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

    /**
     * 将建添加到子数组中
     *
     * @param mapList
     * @param key
     * @param item
     * @param <T>
     * @param <M>
     * @return
     */
    public static <T, M> List<M> addMapList(Map<T, List<M>> mapList, T key, M item) {
        if (!mapList.containsKey(key)) {
            mapList.put(key, new ArrayList<>());
        }
        List<M> ret = mapList.get(key);
        ret.add(item);
        return ret;
    }
yanzg's avatar
yanzg committed
115
}