温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Java8中使用stream过滤map集合

发布时间:2021-05-19 15:41:21 来源:亿速云 阅读:1612 作者:Leah 栏目:编程语言

本篇文章为大家展示了如何在Java8中使用stream过滤map集合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

原有方法说明

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

如何在Java8中使用stream过滤map集合

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

如何在Java8中使用stream过滤map集合

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(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);  }

上述内容就是如何在Java8中使用stream过滤map集合,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI