Java –从列表中删除所有空值
介绍:
在本文中,我们将学习如何使用普通的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 –从列表中删除所有空值相关推荐
- java中list去除空值_Java –从列表中删除所有空值
java中list去除空值 介绍: 在本文中,我们将学习如何使用普通的Java,Java 8 lambda表达式和某些第三方库从Java 列表中删除空值 . 所以,让我们开始吧! 从Java中的 让我 ...
- java字符串删掉子串_如何从Java中的列表中删除子列表?
java字符串删掉子串 从列表中删除子列表 (Removing SubList from a List) Suppose, we have a list of few elements like th ...
- java list 去空字符串_从字符串列表中删除空字符串
我想从python中的字符串列表中删除所有空字符串. 我的想法如下: while '' in str_list: str_list.remove('') 有没有更多的Python方式可以做到这一点? ...
- python列表去空值_如何在Python列表中的列表中删除nan / null值? - python
因此,我有一个具有NaN值的数据框,并将该数据框中的所有行转换为一个列表,然后将其添加到另一个列表中. Index 1 2 3 4 5 6 7 8 9 10 ... 71 72 73 74 75 76 ...
- 如何在保留订单的同时从列表中删除重复项?
是否有内置的程序在保留顺序的同时从Python列表中删除重复项? 我知道我可以使用集合来删除重复项,但这会破坏原始顺序. 我也知道我可以这样滚动自己: def uniq(input):output = ...
- 从Dart列表中删除重复项的2种方法
本文向您展示了从 Flutter 中的列表中删除重复项的 2 种方法.第一个适用于原始数据类型列表.第二个稍微复杂一些,但适用于map****列表或对象列表. 转换为 Set 然后反转为 List 这 ...
- C语言从未排序的链接列表中删除重复项的算法(附完整源码)
C语言从未排序的链接列表中删除重复项的算法 C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main函数测试) C语言从未排序的链接列表中删除重复项的算法完整源码(定义,实现,main ...
- python删除列表中的偶数_Python:从列表中删除奇数
我写了一个函数来从列表中删除奇数,就像这样: def remove_odd(l): for i in l: if i % 2 != 0: l.remove(i) print l return l re ...
- Python | 程序从列表中删除范围内的所有元素
Given a list and we have to remove elements in a range from the list in Python. 给定一个列表,我们必须从Python中的 ...
最新文章
- 求捐“一杯奶茶钱”,西北大学真成“最穷211”?
- css元素捕捉,css元素选择器
- php下dat函数e,PHP 常用函数记录 一
- CMU算法新教材的获取方法
- 蓝桥杯java 算法训练 Torry的困惑(基本型)
- css3禅密花园叫什么名字_新生儿起名:2021元旦出生男孩叫什么名字
- Python元类(type()和metaclass)
- sql case when then else多个条件_SQL-多表查询
- 红杉千万美元投资壁虎烘热游戏内置广告
- c语言goto语句用法_C语言的9种控制结构
- 系统学习数字图像处理之描绘子
- java中rhino什么用_使用require.js和Java / Rhino解析模块
- 数据源Display方法
- 北京各区优质高中排名
- dft频谱泄漏matlab,对于DFT频谱泄漏问题的研究
- 实测:旧安卓(4.4)手机做服务器运行Asp.Net(mono+nginx)可行
- 【Android 逆向】Android 逆向用途 | Android 逆向原理
- php date.getday,getDay()方法_用法示例-javascript词典-js编程词典-php中文网
- 成长的烦恼:如何面对失败常态化的人生
- python学习-reshape()函数理解