重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了如何在Java8中使用stream过滤map集合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
站在用户的角度思考问题,与客户深入沟通,找到五河网站设计与五河网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟主机、企业邮箱。业务覆盖五河地区。原有方法说明
主要处理过滤条件Map对象,过滤掉了null和空字符串 等操作
这里我简单画了个图,对这个过程总结
1.利用filter对null和空字符串进行过滤
2.利用map进行对于Stream中包含的元素使用给定的转换函数进行转换操作
3.collect进行聚合成map
由于公司的代码不合适自己展示,我这里自己仿照公司的写了个类似的简单方法,然后一步一步优化
自定义map工具类处理方法
//这里的代码和原先的代码相比做了修改,去掉了map进行对于Stream中包含的元素使用给定的转换函数进行转换操作 public static MapparseMapForFilter(Map 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) { Mapparams = 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 MapparseMapForFilterByOptional(Map 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) { Mapparams = 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); }
上述内容就是如何在Java8中使用stream过滤map集合,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。