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去除空值

java中list去除空值_Java –从列表中删除所有空值相关推荐

  1. JAVA中修改顺序表中的元素_java – 在列表中查找元素并使用stream()更改它

    如果您的目标是只找到一个元素,那么您可以这样做 MyItem item = l.stream() .filter(x -> x.getValue() > 10) .findAny() // ...

  2. java在表格单元中加入button按钮_java – 在表中实现一个按钮,该按钮使用Th...

    使用Spring Boot和Thymeleaf的tl; dr,当用户单击特定行的第5列中的按钮时,如何在表单中返回表的第1列值? 嗨,您好!长时间听众,第一次来电.对于这个问题,我非常感谢你的帮助. ...

  3. java 读取pdf签名域_Java 获取PDF中的数字签名信息

    本文以Java代码演示如何获取PDF文档中的数字签名信息,包括签名人.签名位置.日期.原因.联系方式.签名在文档中的坐标等等. 程序环境包括: Jdk 1.8.0(版本要求>=1.6.0版本即可 ...

  4. java中作用是什么_Java在编程中的作用是什么?

    2017-07-28 Java编程中更新XML文档的常 JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口. ...

  5. python列表去除none_从Python列表中删除None

    我有一份清单如下:[None, None, None, None, [(u'data1', 2.0, 2.0, 1.0, 1.0, '2015-10-01', '2015-10-01')], None ...

  6. java中常用的坑_Java技术开发中的坑

    1.(2014/05/28)struts2中使用eclipse自动获取getter和setter方法的坑 今天着实被eclipse坑了一把,平时遇到get和set方法时,我都是通过eclipse自动生 ...

  7. loadrunner中的c函数----从参数列表中取参数并与特定字符进行字符串比较。

    今天在www.sztest.net上看到一个关于lr的问题,自己试着解决了一下.主要是想做出一个从参数列表中取参数,并和字符串常量进行比较的功 能.把代码贴到下面.其实是很简单的.问题主要出现在lr_ ...

  8. python中如何求列表中的和_python实现求解列表中元素的排列和组合

    求解列表中元素的排列和组合问题这个问题之前就遇到过几次没有太留意,最近在做题的时候遇上挺多的排列组合问题的,想来有必要温习一下了,今天花点时间写一下,之前都是手工写的,后来知道可以直接使用python ...

  9. python删除列表中的偶数_Python:从列表中删除奇数

    我写了一个函数来从列表中删除奇数,就像这样: def remove_odd(l): for i in l: if i % 2 != 0: l.remove(i) print l return l re ...

最新文章

  1. Broadcast应用场景分析
  2. leetcode算法题--二叉树的锯齿型层次遍历
  3. Oracle存储过程中执行DDL操作
  4. DSO windowed optimization 代码 (3)
  5. “知识图谱+”系列:知识图谱+图神经网络
  6. MVC与MVVM的区别
  7. android条形图,MPAndroid组条形图未显示
  8. linux退出windows域,删除Windows AD域控制器的三种方法
  9. word中填充效果锁定纵横比_【文艺范】Word文档中的首字下沉效果
  10. python多个dataframe_python对分组在多个列上的dataframe进行条件和运算
  11. 诗词文中的地名(名人生卒地、生卒年、名人籍贯)
  12. 第一章 SQL命令 ALTER TABLE(一)
  13. 110报警声+单片机c语言,单片机实现消防车报警声音的设计
  14. IAR 设置程序下载地址
  15. node.js仿知乎
  16. 2022-6-13 全O(1)的数据结构,两数相加,无重复字符的最长子串,寻找两个正序数组的中位数,盛最多水的容器,......
  17. 企鹅杏仁集团完成2.5亿美元融资,投后估值超过10亿美元...
  18. 0x800700E1: 无法成功完成操作,因为文件包含病毒 解决方法
  19. Java将图片处理成背景透明的圆形图片
  20. Kubernetes CKS【10】---Cluster Hardening - Restrict API Access

热门文章

  1. H - Message Bomb Gym - 102798H
  2. C. The Sports Festival
  3. P2486 [SDOI2011]染色
  4. 数论六之计算几何干货——计算几何模板解释全集 及 模板检验训练场
  5. CF476D-Dreamoon and Sets【结论】
  6. P6097-[模板]子集卷积
  7. Codeforces Round #658 (Div. 2)
  8. 【数学】Natasha, Sasha and the Prefix Sums(CF1204E)
  9. 【单调栈】向右看齐(luogu 2947)
  10. Apache Druid(一)简介