venusdrogon / feilong-platform

:gem:all feilong projects's parent
http://feitianbenyue.iteye.com/
Apache License 2.0
94 stars 58 forks source link

MapUtil建议增加:取出(不包含/包含)在keys中的Map元素,并返回新的集合,原集合不变 #234

Closed ijiangtao closed 6 years ago

ijiangtao commented 6 years ago

例如:

//取出不包含在keys中的Map元素,并返回新的集合,原集合不变 public static <K, V> Map<K, V> reversePickoutByKeys(Map<K, V> map,Collection keys){ return pickout(map, keys, true); }

//取出包含在keys中的Map元素,并返回新的集合,原集合不变
public static <K, V> Map<K, V> pickoutByKeys(Map<K, V> map,Collection<K> keys){
    return pickout(map, keys, false);
}

private static <K, V> Map<K, V> pickout(Map<K, V> map,Collection<K> keys,boolean isReverse){
    if (MapUtils.isEmpty(map) || null == keys || keys.isEmpty()){
        return map;
    }

    Map<K, V> resultMap = new HashMap<>();
    resultMap.putAll(map);

    for (K key : keys){
        if (isReverse == resultMap.containsKey(key)){
            resultMap.remove(key);
        }
    }

    return resultMap;
}
ijiangtao commented 6 years ago

image

removeKeys方法不满足上述需求

venusdrogon commented 6 years ago

com.feilong.core.util.MapUtil.getSubMap(Map<K, T>, K...)

com.feilong.core.util.MapUtil.getSubMapExcludeKeys(Map<K, T>, K...)

venusdrogon commented 6 years ago

see https://github.com/venusdrogon/feilong-core/issues/763 完善 MapUtil.removeKeys(Map<K, V>, K...) javadoc