删除List中所有null值的方法
我们都知道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); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。