Java List 集合如何去除null元素

 更新时间:2022年01月26日 10:03:51   作者:两只橙  
这篇文章主要介绍了Java List 集合如何去除null元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

List集合去除null元素

使用 for 循环处理集合

思路:

这种处理方式是把要处理的集合进行遍历,取出其中不为空的元素,添加到新的集合中

public static <T> List<T> removeNull(List<? extends T> oldList) {
    // 临时集合
    List<T> listTemp = new ArrayList();
    for (int i = 0;i < oldList.size(); i++) {
     // 保存不为空的元素
      if (oldList.get(i) != null) {
        listTemp.add(oldList.get(i));
      }
    }
    return listTemp; 
}

使用系统API

集合空元素的处理,api 有直接处理的方法,使用的是迭代器,本质上还是 for 循环的思想

public static <T> List<T> removeNull(List<? extends T> oldList) {
    // 你没有看错,真的是有 1 行代码就实现了
    oldList.removeAll(Collections.singleton(null)); 
    return (List<T>) oldList;  
}

对比

相同较大数据量,第一种方法要比第二种稍微快一点,但优势并不明显,上万条数据才几十毫秒的差别,很明显,第二种处理只用了一行代码就搞定,推荐使用第二种方式处理

java集合去空(list去空)

今天新任职一家公司,

下面是自己写的集合去空

  public static void main(String[] args) {
        List<String> list = Arrays.asList("ye", "chuan", null);
        List<String> collect = list.stream().map(e -> {
            if (e == null) {
                return null;
            }
            return e;
        }).collect(Collectors.toList());
        System.out.println(collect);//[ye, chuan, null]
      collect.removeAll(Collections.singleton(null));
        System.out.println(collect);//[ye, chuan]
    }

下面是公司十几年技术大牛写的集合去空

 public static void main(String[] args) {
        List<String> list = Arrays.asList("ye", "chuan", null);
        List<String> collect = list.stream().map(e -> {
            if (e == null) {
                return null;
            }
            return e;
        }).filter(Objects::nonNull).collect(Collectors.toList());
        System.out.println(collect);//[ye, chuan]
    }

其实感觉都差不多,但是还是感觉自己的代码不如别人的,不知道为什么

意志以为流的.filter方法是过滤自己想要的数据,原来可以去除不想要的数据

感觉自己对jdk8流的写法运用少了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java判断用户名和密码是否符合要求过程详解

    Java判断用户名和密码是否符合要求过程详解

    这篇文章主要介绍了Java判断用户名和密码过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Spring Security基于JWT实现SSO单点登录详解

    Spring Security基于JWT实现SSO单点登录详解

    这篇文章主要介绍了Spring Security基于JWT实现SSO单点登录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java输出打印工具类封装的实例

    Java输出打印工具类封装的实例

    下面小编就为大家带来一篇Java输出打印工具类封装的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Mybatis框架之模板方法模式(Template Method Pattern)的实现

    Mybatis框架之模板方法模式(Template Method Pattern)的实现

    MyBatis中使用了模板方法模式来控制SQL语句的执行流程,本文主要介绍了Mybatis框架之模板方法模式(Template Method Pattern)的实现,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • SpringCloud应用骨架开发详解

    SpringCloud应用骨架开发详解

    这篇文章主要介绍了SpringCloud应用骨架开发详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java 定时器(Timer)及线程池里使用定时器实例代码

    Java 定时器(Timer)及线程池里使用定时器实例代码

    这篇文章主要介绍了Java 定时器(Timer)及线程池里使用定时器实例代码的相关资料,需要的朋友可以参考下
    2016-12-12
  • hibernate批量操作实例详解

    hibernate批量操作实例详解

    这篇文章主要介绍了hibernate批量操作,结合实例形式分析了Hibernate实现批量插入,更新及删除等操作的具体实现技巧,需要的朋友可以参考下
    2016-03-03
  • 使用AOP的@Around后无返回值的解决

    使用AOP的@Around后无返回值的解决

    这篇文章主要介绍了使用AOP的@Around后无返回值的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringMVC实现参数校验配置方法

    SpringMVC实现参数校验配置方法

    这篇文章主要介绍了SpringMVC实现参数校验的配置方式,Spring MVC会抛出MethodArgumentNotValidException异常,并将错误信息绑定到相应的字段上,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Java中.divide()方法使用及注意事项详解

    Java中.divide()方法使用及注意事项详解

    divide方法就是bigdecimal类中的一个除法计算方法,由于该divide方法参数类型众多并且不易理解容易出现错误,这篇文章主要给大家介绍了关于Java中.divide()方法使用及注意事项的相关资料,需要的朋友可以参考下
    2024-03-03

最新评论