原文地址:https://www.cnblogs.com/zhenghengbin/p/9387547.html
- 利用filter對null和空字符串進行過濾
- 利用map對stream中包含的元素使用給定的轉換函數進行轉換操作
- collect進行聚合成map
自定義map工具類處理方法
// 這里的代碼和原先的代碼相比做了修改,利用map對stream中包含的元素使用給定的轉換函數進行轉換操作
public static Map<String, Object> parseMapForFilter(Map<String, Object> map) {
if(map == null) {
return null;
} else {
map = map.entrySet().stream().filter((e) -> checkValue(e.getValue()).collect(Collectors.toMap((e) -> (String) e.getKey(), (e) -> e.getValue())));
}
return map;
}
private static boolean checkValue(Object object) {
if(object instanceof String && "".equals(object)) {
return false;
}
if(null == object) {
return false;
}
return true;
}
測試下:
public static void main(String[] args) {
Map<String,Object> params = new HashMap<>(16);
params.put("a","");
params.put("b",null);
params.put("c","c");
params = MapUtil.parseMapForFilter(params);
System.out.println(params);
System.out.println(MapUtil.parseMapForFilter(null));
}
輸出結果:
{c=c}
null
優化parseMapForFilter方法,加入Optional類
public static Map<String, Object> parseMapForFilterByOptional(Map<String, Object> map) {
return Optional.ofNullable(map).map((v) -> {
Map params = v.entrySet().stream().filter((e) -> checkValue(e.getValue())).collect(Collectors.toMap((e) -> (String) e.getKey(), (e) -> e.getValue()));
return params;
}).orElse(null);
}
測試一下:
public static void main(String[] args) {
Map<String, Object> params = new HashMap<>(16);
params.put("a", "");
params.put("b", null);
params.put("c", "c");
params = MapUtil.parseMapForFilterByOptional(params);
System.out.println(params);
System.out.println(MapUtil.parseMapForFilterByOptional(null));
}
結果:
{c=c}
null
優化checkValue方法
private static boolean checkValueByOptional(Object object) {
return (Boolean) Optional.ofNullable(object).filter((e) -> e instanceof String && e.equals("") ? false : true).orElse(false);
}