java中list去除空值_Java –从列表中删除所有空值

java中list去除空值

介绍:

在本文中,我们将学习如何使用普通的Java,Java 8 lambda表达式和某些第三方库从Java 列表中删除空值

所以,让我们开始吧!

从Java中的

让我们探索从Java 列表中删除null的不同方法:

1. Java 7或更低版​​本:

当使用Java 7或更低版​​本时,我们可以使用以下结构从列表中删除所有空值

Java

@Test
public removeAllNullsFromListWithJava7OrLower() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));list.removeAll(Collections.singleton(null));assertThat(list, hasSize(2));
}

请注意,我们在此处创建了一个可变列表。 尝试从不可变列表中删除null将抛出java.lang.UnsupportedOperationException

2. Java 8或更高版本:

从Java 8或更高版本的Java 列表中删除空值的方法非常直观且优雅:

@Test
public removeAllNullsFromListWithJava8() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));list.removeIf(Objects::isNull);assertThat(list, hasSize(2));
}

我们可以简单地使用removeIf()构造来删除所有值。

如果我们不想更改现有列表,而是返回一个包含所有非空值的新列表,则可以:

Java

@Test
public removeAllNullsFromListWithJava8() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));List<String> newList = list.stream().filter(Objects::nonNull).collect(Collectors.toList());assertThat(list, hasSize(4));assertThat(newList, hasSize(2));
}

我们可以在此处了解有关Java 8流收集器的更多信息

3. Apache Commons:

Apache Commons CollectionUtils类提供了一个filter(Iterable,Predicate)方法,该方法也可以解决我们的目的。 传入的谓词将应用于列表中的所有元素:

Java

@Test
public removeAllNullsFromListWithApacheCommons() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));CollectionUtils.filter(list, PredicateUtils.notNullPredicate());assertThat(list, hasSize(2));
}

从而,从现有列表中过滤掉所有空值

4. Google Guava:

Guava中的Iterables类提供了removeIf(Iterable,Predicate)方法,以帮助我们根据给定的谓词过滤值。 让我们看看如何利用它来发挥我们的优势:

Java

@Test
public removeAllNullsFromListUsingGuava() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));Iterables.removeIf(list, Predicates.isNull());assertThat(list, hasSize(2));
}

另外,如果我们不想修改现有列表,Guava允许我们创建一个新的过滤列表:

Java

@Test
public removeAllNullsFromListUsingGuava() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));List<String> newList = new ArrayList<>(Iterables.filter(list, Predicates.notNull()));assertThat(list, hasSize(4));assertThat(newList, hasSize(2));
}

Java

@Test
public removeAllNullsFromList() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));List<String> newList = new ArrayList<>(Iterables.filter(list, Predicates.notNull()));assertThat(list, hasSize(4));assertThat(newList, hasSize(2));
}

结论:

在本快速教程中,我们探索了多种方法可以从Java 列表中删除所有空值

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/03/java-remove-nulls-from-list.html

java中list去除空值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

URI is not registered (Settings | Languages Frameworks | Schemas and DTDs)

参考&#xff1a; https://www.cnblogs.com/ttflove/p/6341469.html https://blog.csdn.net/c_learner_/article/details/107228678

无法识别的属性“targetframework”。请注意属性名称区分大小写。_神奇!你思考过计算机是怎么识别玻璃和透明物体的吗?...

真实场景中的镜面/玻璃检测和语义分割Charmve | English | Chinesehttps://github.com/Charmve/Mirror-Glass-Detection在这个项目中&#xff0c;我正在学习反射镜和玻璃检测/分段技术。镜子是反射表面&#xff0c;可以反射前面的场景&#xff0c;而玻璃是透明表面&#xff0c;…

Java中的out.write()和out.print()的区别

out 就是 PrintWriter 对象。 out.print() 有处理空值&#xff0c;如果传入的字符串为 null&#xff0c;则会转换为"null"字符串&#xff0c;print() 后续还是调用的 write() 方法&#xff0c;write() 传入的字符串不能为空。这个可以通过 PrintWriter 的源码中看到…

python if else用法_python列表推导式中使用if-else

今天在处理自动化邮件数据时碰到数据行中包含字符串后&#xff0c;从hive中拿到的整数型数据自动转化成了浮点数&#xff0c;严重影响美观性。因此想到了用列表推导式来做转化&#xff0c;将其中的数字型数据全部转化为整型&#xff0c;而字符型数据保留原样。 列表推导式总共有…

java使用:: 表达式_Java 12:开关表达式

java使用:: 表达式在Java 12中&#xff0c;对switch语句进行了增强&#xff0c;以便可以将其用作表达式。 现在也可以在一种情况下打开多个常量&#xff0c;从而使代码更简洁易读。 这些增强功能是一种预览语言功能 &#xff0c;这意味着必须使用--enable-preview标志在Java编译…

jsp中request.getAttributeNames()报红

缺少 servlet-api 依赖&#xff1a; <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency>

fluent瞬态_Java中的瞬态关键字及其使用

fluent瞬态最近&#xff0c;我在一个朋友的一个研究项目中遇到了一个十字架&#xff0c;他们正在学习Java编程的基础知识&#xff0c;其中一些被遗忘的敏感信息打印在文本文件中&#xff0c;并记住了Java中的瞬时关键字。 Java中的瞬时关键字在安全性方面起着重要作用&#xf…

jsp中out.println()报红

需要引入 jsp-api&#xff1a; <dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2.1-b03</version> </dependency>

graphql 有必要吗_您准备好观看GraphQL了吗?

graphql 有必要吗在上一篇文章中&#xff0c;我们讨论了GraphQL与REST相比的优势。 在本文中&#xff0c;我们将看到GraphQL的实际应用。 我创建了一个示例应用程序来展示REST和GraphQL之间的差异。 首先&#xff0c;我们将看到简单产品细节端点的REST实现。 我已经使用Spring …

报错java.lang.NoClassDefFoundError: ognl/DefaultMemberAccess

不要使用新版的 ognl&#xff0c;从 3.2 开始&#xff0c;会报各种乱七八糟的错误。建议使用 3.1.x 版本的&#xff0c;例如下面的版本&#xff1a; <dependency><groupId>ognl</groupId><artifactId>ognl</artifactId><version>3.1.15&l…

spring 注释_Spring核心注释

spring 注释介绍&#xff1a; org.springframework.beans.factory.annotation和org.springframework.context.annotation包中存在的Spring注释通常称为Spring Core注释。 我们可以将它们分为两大类&#xff1a;DI相关的注释和上下文配置注释&#xff1a; 在本教程中&#xff0…

Struts2 <s:debug/> 标签无法显示

首先&#xff0c;确保在 JSP 页面中引入 Struts2 的标签库&#xff1a; <% taglib uri"/struts-tags" prefix"s"%>在 Struts 2 项目中需要查看值栈&#xff08;Value Stack &#xff09;的内容&#xff0c;但是在 JSP 页面中添加了 <s:debug/&g…

JSTL/EL表达式/Struts2标签/OGNL表达式

文章目录JSTL EL表达式Struts 标签 OGNL表达式JSTL EL表达式 JSTL 只能用在 JSP 文件中&#xff0c;不可以在 XML 和 HTML 文件中使用&#xff0c;不可以用在 JS 语境中&#xff0c;不可以用在 Java 的语境中。在 JSP 文件中&#xff0c;JSTL 标签可以使用在 HTML 标签的属…

spring 注释_Spring @Value注释

spring 注释介绍&#xff1a; Spring Value批注用于将值注入变量和方法参数。 我们可以读取spring环境变量或系统变量。 它还支持SpEL。 在本快速教程中&#xff0c;我们将探讨如何使用Spring Value批注。 建立&#xff1a; 让我们首先在app.properties文件中定义一些属性&am…

Struts2标签学习笔记

文章目录Struts2 标签是干什么的Struts2 标签可以使用在哪里关于标签的属性常用的标签s:property调用方法s:iterator遍历Integer类型的Lists:selects:ifs:form自动填写表单项的值s:textfields:includes:submits:checkboxs:radios:action示例代码s:dates:url示例代码s:set示例代…

maven依赖范围_Maven依赖范围

maven依赖范围介绍&#xff1a; 管理依赖关系是Maven的核心功能。 定义Maven依赖项时&#xff0c; scope属性定义了该依赖项在不同的Maven生命周期阶段&#xff08;例如build&#xff0c;test和run&#xff09;上的可见性。 依赖范围限制了任何项目中依赖的传递性&#xff0c;…

雅加达poi_雅加达EE:干净的板岩

雅加达poi该公告雅加达EE不能使用javax。*名称空间是个好消息&#xff0c;并提供雅加达EE用干净的石板上构建和创新企业级Java的未来。 原始提案 可以预见&#xff0c; javax。*和jakarta。*名称空间将在Java EE 8之后共存&#xff0c;随着它的发展&#xff0c; jakarta。*名称…

Struts2的配置文件struts.xml的模板

文章目录模板标签说明packageactionresult模板 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2…

Struts2的配置文件web.xml的模板

<?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns"http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation"http://xmlns.jcp.org/xml/ns/javaee http://…

cassandra数据备份_Cassandra中的数据建模

cassandra数据备份在关系数据模型中&#xff0c;我们为域中的每个对象建模关系/表。 对于Cassandra&#xff0c;情况并非如此。本文将详细介绍在Cassandra中进行数据建模时需要考虑的所有方面。 以下是Cassandra数据建模的粗略概述。 从上图可以看出&#xff0c; 概念数据建模…