请叫我小C的gravatar头像
请叫我小C 2013-12-27 09:18:33

【小C出品】对java Map的操作

分享个代码块,对map的几个操作。欢迎补充。

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapUtil {

/**
     * 数组2Map
     * @param keys
     * @param values
     * @return
     */
    public static Map arrayToMap(Object[] keys, Object[] values) {
        boolean hasValue = isNotNull(values);
        Map map = new HashMap();
        for (int i = 0; i < keys.length; i++) {
            map.put(keys[i], hasValue ? values[i] : null);
        }
        return map;
    }

    /**
     * params2Map
     * @param mapDatas
     * @return
     */
    public static Map toMap(Object... mapDatas) {
        if (isNull(mapDatas)) {
            return new LinkedHashMap();
        } else if (mapDatas.length % 2 != 0) {
            throw new IllegalArgumentException("参数长度只能是偶数");
        } else {
            Map map = new LinkedHashMap();
            for (int i = 0; i < mapDatas.length;) {
                Object key = mapDatas[i++];
                Object val = mapDatas[i++];
                map.put(key, val);
            }
            return map;
        }
    }

    /**
     * 获取List, 没有则创建新的
     */
    public static <T> List<T> getList(Map map, Object key) {
        List<T> value = (List<T>) map.get(key);
        if (isNull(value)) {
            value = new LinkedList<T>();
            map.put(key, value);
        }
        return value;
    }

    /**
     * 
     * @param item
     * @return
     */
    public static int indexOfMapKeyOrValue(Map map, Object item) {
        Set<Map.Entry> entrySet = map.entrySet();
        int i = 0;
        for (Entry entry : entrySet) {
            if (entry.getKey().equals(item) || entry.getValue().equals(item)) {
                return i;
            }
            i++;
        }
        return -1;
    }

    public static String getKey4Value(Map cache, Object value) {
        Set<Map.Entry> entrySet = cache.entrySet();
        for (Map.Entry entry : entrySet) {
            if (entry.getValue() == value || entry.getValue().equals(value)) {
                return entry.getKey().toString();
            }
        }
        return "";
    }

     public static boolean isNull(Object src) {
        return src == null;
    }

    public static boolean isNotNull(Object src) {
        return !isNull(src);
    }

}

 


最代码官方编辑于2013-12-27 9:52:03


打赏

最代码最近下载分享源代码列表最近下载
最代码最近浏览分享源代码列表最近浏览
wuziayng1232  LV10 2023年5月8日
TCTCTCL  LV1 2022年12月4日
 LV10 2021年6月12日
何松林  LV7 2021年4月20日
ping184  LV1 2021年3月16日
zhangdezheng1  LV1 2020年12月29日
zaq123zaq  LV10 2020年12月22日
爱情戴罪的羔羊  LV7 2020年8月7日
1113783182  LV1 2020年7月2日
llsama  LV9 2020年3月26日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友