首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在使用Guava转换集合时是否有一种优雅的方法来删除空值?

在使用Guava转换集合时,可以使用Collections2.filter()方法结合Predicates.notNull()来删除空值。以下是一个示例代码:

代码语言:java
复制
import com.google.common.base.Predicates;
import com.google.common.collect.Collections2;
import java.util.ArrayList;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("A");
    list.add(null);
    list.add("B");
    list.add(null);
    list.add("C");

    List<String> filteredList = Collections2.filter(list, Predicates.notNull());

    System.out.println(filteredList);
  }
}

输出结果:

代码语言:txt
复制
[A, B, C]

在这个示例中,我们创建了一个包含空值的list,然后使用Collections2.filter()方法结合Predicates.notNull()来过滤掉空值,最后输出过滤后的filteredList

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Google guava工具类介绍和使用

(guava中还有很多java里面没有给出集合类型) 2.将集合转换为特定规则字符串 以前我们将list转换为特定规则字符串是这样写: //use java List list...="" 检查是否,不仅仅是字符串类型,其他类型判断,全部都封装在 Preconditions类里,里面的方法全为静态 其中一个方法源码 @CanIgnoreReturnValue public...MoreObjects 这个方法是Objects过期后官方推荐使用替代品,该类最大好处就是不用大量重写 toString,用一种优雅方式实现重写,或者某个场景定制使用。...guava缓存 guava缓存设计比较巧妙,可以很精巧使用。...以上只是guava使用一小部分,guava是个大工具类,第一版guava是2010年发布,每一版更新和迭代都是一种创新。 jdk升级很多都是借鉴guava里面的思想来进行

3.8K30

提升编程效率利器: 解析Google Guava库之集合篇Immutable(一)

Guava库扩展了Java集合类,提供了一系列高效、实用且易于使用集合API。本文中,我们将深入探索Guava库中常用集合类API,并了解它们如何提升我们开发效率。...当你需要一个不会变动合时Guava不可变集合将是你最佳选择。 其他API敬请期待后续文章 1....-- 请检查是否更新版本 --> 然后,在你Java代码中使用这些不可变集合: import com.google.common.collect.ImmutableList...然而,由于 Guava 没有直接提供一个简单方法来创建一个全新不可变表格,通常做法是先创建一个可变表格,然后将其转换为一个不可变视图。 7....这些集合类型 Guava 库中被广泛使用,可以帮助开发者编写更加健壮和可维护代码。 需要注意是,所有 Guava 不可变集合实现都不接受 null

9400

Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍

并且 Guava 广泛用于 Google 内部 Java 项目中,也被其他公司广泛使用,甚至新版 JDK 中直接引入了 Guava优秀类库,所以质量毋庸置疑。...后可以直接使用 Preconditions.checkNotNull 进行非判断,好处为觉得有两个,一是语义清晰代码优雅;二是你也可以自定义报错信息,这样如果参数为,报错信息清晰,可以直接定位到具体参数...Guava 创建不可变集合是拒绝 null ,因为 Google 内部调查中,95% 情况下都不需要放入 null 。...是不是十分好用呢。而且可以创建时直接扔进去几个元素,这个简直太赞了,再也不用一个个 add 了。 集合交集并 过于简单,直接看代码和输出结果吧。...,这有时候不是我们想要,那么使用 Guava 什么不一样呢?

1K30

java开发常用工具类库google guava

参考:整理一波Guava使用技巧 - 掘金Guava中这些Map骚操作,让我代码量减少了50% - 掘金pom依赖 com.google.guava...name");Map> stringCollectionMap = multiMap.asMap();RangeMap-范围mapRangeMap描述了一种从区间到特定映射关系...,让我们能够以更为优雅方法来书写代码分数段判断案例'com.google.common.collect.RangeMap' is marked unstable with @Beta shigen 觉得这个很好用...(Preconditions)Preconditions是Guava提供一组前置条件检查工具,它提供了一些检查参数是否符合预期方法。...弱引用键或:CacheBuilder 提供了一些选项,可以使用弱引用持有缓存键或。当没有其他地方引用某个键或时,缓存会自动将其从内存中移除,以避免内存泄漏。

46910

java retry(重试) spring retry, guava retrying 详解

大家用最多重试方式就是MQ了,但是如果你项目中没有引入MQ,那就不方便了。 还有一种方式,是开发者自己编写重试机制,但是大多不够优雅。...默认为 @Backoff 序号 属性 类型 默认 说明 1 delay long 0 如果不设置则默认使用 1000 milliseconds 重试等待 2 maxDelay long 0 最大重试等待时间...如果你要以返回某个状态来判定是否需要重试,可能只能通过自己判断返回然后显式抛出异常了。 小华:我们项目中想根据对象属性来进行重试。...guava-retrying guava-retrying 模块提供了一种通用方法, 可以使用Guava谓词匹配增强特定停止、重试和异常处理功能来重试任意Java代码。...优势 guava retryer工具与spring-retry类似,都是通过定义重试者角色来包装正常逻辑重试,但是Guava retryer更优策略定义,支持重试次数和重试频度控制基础上,能够兼容支持多个异常或者自定义实体对象重试源定义

1.4K30

【Java 基础篇】Java Set 集合详解:轻松管理不重复元素

Set 集合性能考虑 选择使用 Set 集合时,需要考虑性能。...选择适合您需求实现类是非常重要,要根据具体场景来决定。 7. 使用注意事项 使用 Set 集合时,需要注意以下事项: Set 不允许重复元素,因此添加重复元素将被忽略。...= new HashSet(Arrays.asList(1.0, 2.0, 3.0)); 8.3 Set 集合更多用法 : 8.3.1 判断集合是否 可以使用 isEmpty() 方法来检查一个...Set 是否。...希望通过本文介绍,您对 Set 集合了更深入了解,并能够实际编程中灵活运用。无论是初学者还是经验开发者,都可以通过掌握 Set 集合来提高代码效率和可维护性。

5.1K20

Arrays.asList():使用指南

(list); // [a, b, c] 当我们需要创建一个或者单元素 List 集合时,我们可以使用 Arrays.asList() 来简化代码。...这样就会导致返回 List 只有一个元素,就是原始数组本身。 如果想要把一个基本数据类型数组转换成 List,以下几种方法: 使用循环遍历数组,并把每个元素添加到 List 中。...使用第三方库,如 Guava 或者 Apache Commons Lang,它们提供了一些工具类和方法来处理基本数据类型数组和集合。....collect(Collectors.toList()); System.out.println(list); // [1, 2, 3] // 使用 Guava 实现数组到 List 转换 int...如果想要创建一个可变 List 集合,以下几种方法: 使用 ArrayList 构造器,并把 Arrays.asList() 作为参数传入。

19310

是时候跟你指针说再见了

What,我们接近一万行代码都是? ? 好了,接下来,要进入正题了。...NullObject模式首次发表“ 程序设计模式语言 ”系列丛书中。一般面向对象语言中,对对象调用前需要使用检查,来判断这些对象是否,因为引用上无法调用所需方法。...示例代码如下(命名来自网络,哈哈到底是多懒): Nullable是对象相关操作接口,用于确定对象是否,因为对象模式中,对象为会被包装成一个Object,成为Null Object,该对象会对原有对象所有方法进行实现...Optional 还有一种方式是使用Java8特性中Optional来进行优雅地判,Optional来自官方介绍如下: A container object which may or may not...value : other; } 怎么样,使用Optional后我们代码是不是瞬间变得非常整洁,或许看到这段代码你会有很多疑问,针对复杂一长串判,Optional优势,但是对于简单使用

97930

是时候跟你指针说再见了

What,我们接近一万行代码都是? ? 好了,接下来,要进入正题了。...NullObject模式首次发表“ 程序设计模式语言 ”系列丛书中。一般面向对象语言中,对对象调用前需要使用检查,来判断这些对象是否,因为引用上无法调用所需方法。...示例代码如下(命名来自网络,哈哈到底是多懒): Nullable是对象相关操作接口,用于确定对象是否,因为对象模式中,对象为会被包装成一个Object,成为Null Object,该对象会对原有对象所有方法进行实现...Optional 还有一种方式是使用Java8特性中Optional来进行优雅地判,Optional来自官方介绍如下: A container object which may or may not...value : other; } 怎么样,使用Optional后我们代码是不是瞬间变得非常整洁,或许看到这段代码你会有很多疑问,针对复杂一长串判,Optional优势,但是对于简单使用

58920

【最佳实践】如何优雅进行重试

所以需要使用一种优雅一点方式,不直接修改业务代码,那要怎么做呢? 其实很简单,直接在业务代码外面再包一层就行了,代理模式在这里就有用武之地了。 ?...重试了4次之后输出了Hello,符合预期。 动态代理可以将重试逻辑都放到一块,显然比直接使用代理类要方便很多,也更加优雅。...可以使用exceptionExpression来添加异常表达式,抛出异常后执行,以判断后续是否进行重试。...但也还是存在一定不足,Spring重试机制只支持对异常进行捕获,而无法对返回进行校验。 ? 0|8Guava Retry 最后,再介绍另一个重试利器——Guava Retry。...相比Spring Retry,Guava Retry具有更强灵活性,可以根据返回校验来判断是否需要进行重试。 先来看一个小栗子: 先引入jar包: ? 然后用一个小Demo来感受一下: ?

1K40

Java 中如何优雅地判

2   What,我们接近一万行代码都是? ? 3   好了,接下来,要进入正题了。...NullObject模式首次发表“ 程序设计模式语言 ”系列丛书中。一般面向对象语言中,对对象调用前需要使用检查,来判断这些对象是否,因为引用上无法调用所需方法。   ...4   示例代码如下(命名来自网络,哈哈到底是多懒):   Nullable是对象相关操作接口,用于确定对象是否,因为对象模式中,对象为会被包装成一个Object,成为Null Object...7 Optional   还有一种方式是使用Java8特性中Optional来进行优雅地判,Optional来自官方介绍如下: A container object which may or may...value : other; }   怎么样,使用Optional后我们代码是不是瞬间变得非常整洁,或许看到这段代码你会有很多疑问,针对复杂一长串判,Optional优势,但是对于简单使用

2.3K20

Guava工具类简介

很多小伙伴项目中已经引入了,但并没有使用,大家对于这个也是偶尔使用,但Guava中包涵了很多方面的类,例如集合、缓存、并发、IO等,今天笔者就带大家了解一下Guava一些类,希望对大家有所帮助。...BiMap 双向map实际开发过程中,我们会经常通过value找对应key,如果是原有的map,我们只能循环整个map,对value进行匹配 从而寻找key for (String key :...中RangeMap描述了一种从区间到特定映射关系,让我们能够以更为优雅方法来书写代码。...Preconditions.checkArgument(false,"报错啦");此外还提供了判、字符匹配等相关方法//判断字符是否包含oPredicates.containsPattern("o")...;//判Predicates.notNull();切分字符串一般我们操作字符串都会使用Stringsplit方法,但返回一般是个数组,使用困困难,这时我们可以利用Guava提供相关类操作 事半功倍

26610

【吐血整理】想学Google Guava看这篇就够了「建议收藏」

它在谷歌中大多数Java项目中被广泛使用,也被许多其他公司广泛使用,熟练掌握这些工具类能帮助我们快速处理日常开发中一些问题,比如,不可变集合、集合转换、字符串处理、本地缓存等 最近一段时间,我把...查找value,通过value来查找,也就是需要一个双向Map,如果使用JDK中Map,我们需要维护两个Map,一个从key映射到value,另外一个从value映射到key,而且不管是新增还是修改...JDK中集合操作已经提供了很多工具类,比如基本集合交集、并、差这些常用操作,Guava中提供工具类是对JDK补充,Guava中提供了静态创建集合方法,还有集合很多操作,比如笛卡尔..., 可以大大提升你对字符串处理效率 具体详细用法,请查看《Guava系列之强大String工具类》 6、Guava限流RateLimiter 互联网高并发场景下,限流是用来保证系统稳定性一种手段...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除

1.5K10

提升编程效率利器: 解析Google Guava库之IO工具类(九)

这些工具类大大简化了流处理逻辑,减少了开发人员需要编写代码量。 我们来模拟以下场景:从一个文件中读取数据,将这些数据转换为一个特定字符编码,处理这些数据,并最终写入到另一个文件中。...库特性 // 下面的代码片段展示了如何更优雅使用GuavaByteStreams和CharStreams public static void mainWithGuavaStreams...然而,上面的mainWithGuavaStreams方法中TransformingInputStream并不是一个优雅或高效解决方案,因为GuavaCharStreams并没有提供直接转换功能。...下面是一个使用Guava库中Files工具类Java代码示例。展示如何使用Files工具类来创建临时文件、写入数据、读取数据、复制文件以及删除文件。...这些工具不仅提高了开发效率,还提升了代码质量和可维护性。因此,Java开发中,使用GuavaI/O工具是一个明智选择。 术因分享而日新,每获新知,喜溢心扉。

12710

Java中如何优雅地判

What,我们接近一万行代码都是? 好了,接下来,要进入正题了。...NullObject模式首次发表“ 程序设计模式语言 ”系列丛书中。一般面向对象语言中,对对象调用前需要使用检查,来判断这些对象是否,因为引用上无法调用所需方法。...示例代码如下(命名来自网络,哈哈到底是多懒): Nullable是对象相关操作接口,用于确定对象是否,因为对象模式中,对象为会被包装成一个 Object,成为 NullObject,该对象会对原有对象所有方法进行实现...---- Optional 还有一种方式是使用 Java8特性中 Optional来进行优雅地判。一个可能包含也可能不包含非null容器对象。...怎么样,使用 Optional后我们代码是不是瞬间变得非常整洁,或许看到这段代码你会有很多疑问,针对复杂一长串判,Optional优势,但是对于简单使用 Optional也会增加代码阅读成本

1.4K31

只因少写一个判,我代码上线后炸了!

解释一下执行过程: ofNullable(province ) :它以一种智能包装方式来构造一个 Optional实例, province是否为 null均可以。...如果为 null,返回一个单例 Optional对象;如果非 null,则返回一个 Optional包装对象 map(xxx ):该函数主要做转换,如果上一步非 null,则调用括号里具体方法进行转化...=null)判,那么他代码肯定是一定 bug几率。...getScore()这个函数返回特殊性(可能为 null),这样一个警示一定会很大几率上帮助调用者规避 null指针异常。...Google大名鼎鼎 Guava库中早就提供了 Optional接口来帮助优雅地处理 null对象问题,其本质也是可能为 null对象上做了一层封装,使用起来和JDK本身提供 Optional接口没有太大区别

90420

使用GuavaMultimap实现多键值映射

简介Guava是一组来自Google核心Java库,实际应用中非常广泛,熟练掌握guava可以让同学们开发中如虎添翼,节省开发时间,提高工作效率。...我们可以使用 computeIfAbsent 方法来初始化每个新字符列表。...转换和条目multimap一种方便方法,即transformValues,将转换为其他。例如,使用上面创建multimap ,让我们通过将作为后缀添加方式来转换。...如果我们想使用键值对键进行转换,我们可以使用transformEntries。第二个参数类型为EntryTransformer,它采用键值对并返回新。同样,返回multimap只是一个视图。...在这里,我们键2之前获得键1条目。将 b 相加两次不会将其相加两次,因为它使用 HashSet 作为

9410

还在使用集合类完成这些功能?不妨来看看 Guava 集合类!!!

虽然这个需求使用 Map 可以轻松搞定,但是小黑哥还是觉得这种写法有点笨拙,如果没有判,将会导致 NPE 异常。 如果很多地方需要功能,我们就可以抽象出来,将其封装成工具类。...如果若特定一定要替换,可以使用 BiMap#forcePut代替。 敲黑板,这个知识点记下来。小黑哥使用过程中,就踩过这个坑。 同样 BiMap 也有各种实现类: ?...Lists#transform 内部使用懒加载机制,只有调用获取元素时候,如 result.get 才会真正使用 Function 从源 List 获取元素,做相应转化。...交集并 Sets 提供几个方法,可以快速求出两个 Set 集合交集,并以及差。 ? 不可变集合 不可变(Immutable)集合,顾名思义集合不可以被修改。...初始创建不可变集合时吗,需要传入数据源,创建完成之后,集合就再也不能修改,增加,删除元素,否则将会报错。 这是一种防御性策略,防止集合在后续操作中被修改,从而引发问题。

56730
领券