删除List中所有null值的方法

乔欣 Java经验 发布时间:2023-03-09 22:41:29 阅读数:4454 1
我们都知道list中如果存在null指针,则会产生相应的异常,那么如何将list中null删除的方法分享,如下所示

List删除null值的方法

实现思路:
    使用List自带方法、Stream、Guava和Apache Commons Collections
	中的方法,即可实现对List中null删除的方法分享

List自带的方法

List.remove(Object o):
    删除一个元素,成功则返回true;需要注意它只删除一个;
List.removeAll(Collection<?> c):
    删除存在集合c的所有情况,注意入参不是一个元素;
List.removeIf(Predicate<? super E> filter):
    删除所有满足条件的元素,入参为Lambda表达式。
 
@Test
public void listRemove() {
  List<String> list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  List<String> expected = Lists.newArrayList("java265", "java爱好者", "世上最好的语言");
  //remove
  while (list.remove(null));//巧妙利用循环删除
  assertEquals(expected, list);
  //removeAll
  list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  list.removeAll(Collections.singletonList(null));
  assertEquals(expected, list);
  //removeIf
  list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  list.removeIf(Objects::isNull);
  assertEquals(expected, list);
}

Stream的方式删除空值

 
@Test
public void stream() {
  List<String> list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  List<String> expected = Lists.newArrayList("java265", "java爱好者", "世上最好的语言");
  List<String> result = list.parallelStream()
    .filter(Objects::nonNull)
    .collect(Collectors.toList());
  assertEquals(expected, result);
}

使用Guava库删除空值

Guava是非常优秀的Java库
   提供许多优秀的处理集合类的方法
   本次使用Iterables类进行处理
@Test
public void guava() {
  //改变原有List
  List<String> list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  List<String> expected = Lists.newArrayList("java265", "java爱好者", "世上最好的语言");
  Iterables.removeIf(list, Objects::isNull);
  assertEquals(expected, list);
  //保留原有List
  list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  List<String> result = Lists.newArrayList(Iterables.filter(list, Objects::nonNull));
  assertEquals(expected, result);
}

使用Apache Commons库删除空值

@Test
public void apacheCommonsCollections() {
  List<String> list = Lists.newArrayList("开发者", null, "前端开发", null, "最好IDE");
  List<String> expected = Lists.newArrayList("java265", "java爱好者", "世上最好的语言");
  CollectionUtils.filter(list, Objects::nonNull);
  assertEquals(expected, list);
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202303/16783729375987.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者