千家信息网

有哪四类方法删除List里面的所有null值

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这期内容当中小编将会给大家带来有关有哪四类方法删除List里面的所有null值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 简介万恶的null已经折磨程序员许久
千家信息网最后更新 2024年09月22日有哪四类方法删除List里面的所有null值

这期内容当中小编将会给大家带来有关有哪四类方法删除List里面的所有null值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1 简介

万恶的null已经折磨程序员许久了,也带来了许多难以发现却造成严重损失的NullPointerException。我们需要尽可能的避免它,有一种简单的办法就是在它进入下轮处理前,我们就把它扼杀在摇篮里。

主要介绍四类方法,分别是List接口的方法、StreamGuavaApache Commons Collections来删除一个List里面的null值。

2 四类方法

2.1 List自带的方法

List有许多remove的方法可以使用,以下三个都可以满足我们的需求:

  • List.remove(Object o):删除一个元素,成功则返回true;需要注意它只删除一个;

  • List.removeAll(Collection c):删除存在集合c的所有情况,注意入参不是一个元素;

  • List.removeIf(Predicate filter):删除所有满足条件的元素,入参为Lambda表达式。

代码如下:

@Testpublic void listRemove() {  List list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  List expected = Lists.newArrayList("Cup", "Apple", "Desk");  //remove  while (list.remove(null));//巧妙利用循环删除  assertEquals(expected, list);  //removeAll  list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  list.removeAll(Collections.singletonList(null));  assertEquals(expected, list);  //removeIf  list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  list.removeIf(Objects::isNull);  assertEquals(expected, list);}

2.2 Stream的方式

Stream的方法很容易理解,就是加一个过滤器即可,过滤条件为非空,具体代码如下:

@Testpublic void stream() {  List list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  List expected = Lists.newArrayList("Cup", "Apple", "Desk");  List result = list.parallelStream()    .filter(Objects::nonNull)    .collect(Collectors.toList());  assertEquals(expected, result);}

2.3 使用Guava库

Guava是非常优秀的Java库,提供了许多优秀的处理集合类的方法,本次使用了Iterables类进行处理,代码如下:

@Testpublic void guava() {  //改变原有List  List list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  List expected = Lists.newArrayList("Cup", "Apple", "Desk");  Iterables.removeIf(list, Objects::isNull);  assertEquals(expected, list);  //保留原有List  list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  List result = Lists.newArrayList(Iterables.filter(list, Objects::nonNull));  assertEquals(expected, result);}

本文提供两种方法,一种会改变原有的List,另一种则不会。

2.4 使用Apache Commons的库

Apache Commons Collections也提供了很方便的方法,具体代码如下:

@Testpublic void apacheCommonsCollections() {  List list = Lists.newArrayList("Cup", null, "Apple", null, "Desk");  List expected = Lists.newArrayList("Cup", "Apple", "Desk");  CollectionUtils.filter(list, Objects::nonNull);  assertEquals(expected, list);}

虽然本文讲的是List删除null的方法,但稍加修改,就可以扩展到集合类删除特定条件的值,这还是非常有用的。

上述就是小编为大家分享的有哪四类方法删除List里面的所有null值了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

方法 代码 元素 就是 条件 处理 优秀 内容 分析 巧妙 成功 万恶 三个 专业 中小 内容丰富 办法 尽可能 情况 损失 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发外包公司管理资金分配 重庆扬笛网络技术有限公司 iis服务器提供的服务有哪些 交换机是不是网络安全设备 子网掩码可以保护网络安全吗 数据库关联语句命令 软件开发行业贝塔值 集中式数据库名词解释 网络安全专题课心得 服务直销软件开发 红力互联网络技术 数据库错误代码3902 云端服务器会监控吗 四大网络安全审计部门名称 网络安全大班教案及反思 数据库网络技术面试 2013年1月软件开发工具 软件开发需要成本 贵州省公安厅网络安全局 曲阜兴成网络技术服务中心 饥荒怎么看服务器历史 软件开发京东和滴滴哪个好 长沙智能边缘计算服务器直销价格 为什么服务器关闭数据要备份 数据库关联语句命令 武进区网络安全教育平台 对网络安全的看法范文 实用计算机网络技术结课作业 2021幼儿园网络安全宣传周 数据库技术主要与应用
0