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

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

成都创新互联公司主营米东网站建设的网络公司,主营网站建设方案,重庆App定制开发,米东h5重庆小程序开发搭建,米东网站营销推广欢迎米东等地区企业咨询

原有方法说明

主要处理过滤条件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集合,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。

名称栏目:如何在Java8中使用stream过滤map集合
文章出自:https://www.cdcxhl.com/article4/jodgie.html

成都网站建设公司_创新互联,为您提供品牌网站设计网站设计手机网站建设云服务器网站收录自适应网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化