介绍:

在本文中,我们将学习如何使用普通的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 –从列表中删除所有空值相关推荐

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

    java中list去除空值 介绍: 在本文中,我们将学习如何使用普通的Java,Java 8 lambda表达式和某些第三方库从Java 列表中删除空值 . 所以,让我们开始吧! 从Java中的 让我 ...

  2. java字符串删掉子串_如何从Java中的列表中删除子列表?

    java字符串删掉子串 从列表中删除子列表 (Removing SubList from a List) Suppose, we have a list of few elements like th ...

  3. java list 去空字符串_从字符串列表中删除空字符串

    我想从python中的字符串列表中删除所有空字符串. 我的想法如下: while '' in str_list: str_list.remove('') 有没有更多的Python方式可以做到这一点? ...

  4. python列表去空值_如何在Python列表中的列表中删除nan / null值? - python

    因此,我有一个具有NaN值的数据框,并将该数据框中的所有行转换为一个列表,然后将其添加到另一个列表中. Index 1 2 3 4 5 6 7 8 9 10 ... 71 72 73 74 75 76 ...

  5. 如何在保留订单的同时从列表中删除重复项?

    是否有内置的程序在保留顺序的同时从Python列表中删除重复项? 我知道我可以使用集合来删除重复项,但这会破坏原始顺序. 我也知道我可以这样滚动自己: def uniq(input):output = ...

  6. 从Dart列表中删除重复项的2种方法

    本文向您展示了从 Flutter 中的列表中删除重复项的 2 种方法.第一个适用于原始数据类型列表.第二个稍微复杂一些,但适用于map****列表或对象列表. 转换为 Set 然后反转为 List 这 ...

  7. C语言从未排序的链接列表中删除重复项的算法(附完整源码)

    C语言从未排序的链接列表中删除重复项的算法 C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main函数测试) C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main ...

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

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

  9. Python | 程序从列表中删除范围内的所有元素

    Given a list and we have to remove elements in a range from the list in Python. 给定一个列表,我们必须从Python中的 ...

最新文章

  1. 求捐“一杯奶茶钱”,西北大学真成“最穷211”?
  2. css元素捕捉,css元素选择器
  3. php下dat函数e,PHP 常用函数记录 一
  4. CMU算法新教材的获取方法
  5. 蓝桥杯java 算法训练 Torry的困惑(基本型)
  6. css3禅密花园叫什么名字_新生儿起名:2021元旦出生男孩叫什么名字
  7. Python元类(type()和metaclass)
  8. sql case when then else多个条件_SQL-多表查询
  9. 红杉千万美元投资壁虎烘热游戏内置广告
  10. c语言goto语句用法_C语言的9种控制结构
  11. 系统学习数字图像处理之描绘子
  12. java中rhino什么用_使用require.js和Java / Rhino解析模块
  13. 数据源Display方法
  14. 北京各区优质高中排名
  15. dft频谱泄漏matlab,对于DFT频谱泄漏问题的研究
  16. 实测:旧安卓(4.4)手机做服务器运行Asp.Net(mono+nginx)可行
  17. 【Android 逆向】Android 逆向用途 | Android 逆向原理
  18. php date.getday,getDay()方法_用法示例-javascript词典-js编程词典-php中文网
  19. 成长的烦恼:如何面对失败常态化的人生
  20. python学习-reshape()函数理解

热门文章

  1. codeforces280 C. Game on Tree(期望)
  2. Sentinel(十三)之动态规则扩展
  3. Linux下查找命令
  4. MySQL的表数据复制
  5. 捡到东西说给钱才给东西?算不算敲诈勒索……
  6. 《白鹿原》金句摘抄(四)
  7. 2017蓝桥杯省赛---java---B---2(纸牌三角形)
  8. 二分查找非递归方式实现
  9. 18000 6c java_面向ISO18000-6C协议的无源超高频射频识别标签芯片设计
  10. 日期相减 python_如果将excel的数字转化为日期(高级教程)