最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯。一次无意的点到了公司封装的对map集合过滤的方法,发现了stream。于是研究了一下。并对原有的代码再次结合Optional进行重构下

原有方法说明

主要处理过滤条件Map对象,过滤掉了null和空字符串 等操作

这里我简单画了个图,对这个过程总结

  • 1.利用filter对null和空字符串进行过滤
  • 2.利用map进行对于Stream中包含的元素使用给定的转换函数进行转换操作
  • 3.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(