Google Guava处理null

Google Guava提供了一个简单的处理"null"方式

 

maven 依赖

<dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>14.0.1</version>
    </dependency>

 

1、处理 null 使用if(){}else{}

import java.util.LinkedList;
import java.util.List;
 
public class App 
{
    public static void main( String[] args )
    {
        List<String> list = new LinkedList<String>();
        list.add("A");
        list.add(null);
        list.add("C");
        list.add(null);
        list.add("E");
        list.add("");
        String value;
        for(int i = 0 ; i < list.size(); i++){
            value = list.get(i);
            if(value == null || "".equals(value)){
                System.out.println("index: "+i+" - value: no value");
            }else{
                System.out.println("index: "+i+" - value: "+value);
	}
        }
    }
 
}

 

2、使用Guava

Guava提供了一个Optional类,可以对空对象进行封装

 

import java.util.LinkedList;
import java.util.List;
import com.google.common.base.Optional;
import static com.google.common.base.Strings.emptyToNull;
 
public class App 
{
    public static void main( String[] args )
    {
        List<String> list = new LinkedList<String>();
        list.add("A");
        list.add(null);
        list.add("C");
        list.add(null);
        list.add("E");
        list.add("");
        Optional<String> possible;
        for(int i = 0 ; i < list.size(); i++){
            possible = Optional.fromNullable(emptyToNull(list.get(i)));
            System.out.println("index: "+i+" -  value: "+possible.or("no value"));
        }
    }
   
}

 

输出:

index: 0 -  value: A
index: 1 -  value: no value
index: 2 -  value: C
index: 3 -  value: no value
index: 4 -  value: E
index: 5 -  value: no value

更多的方式创建Optional实例

如果我们知道自己要封装的对象是一个空对象,可以用

Optional.absent();

如果封装的对象是一个非空对象,则可以用

Optional.of(obj);

如果不知道对象是否为空,就这样创建创建

Optional.fromNullable(obj);

 

 

 

第一百三十九回 介绍三个BLE包 本章回中主要介绍了Flutter中BLE的概念和操作方法,主要介绍了三个BLE包的功能和差异,以方便大家在BLE操作中选择不同的包。 阅读详情

相关推荐

AlphaFold-multimer 复合物结构预测

是DeepMind开发的AlphaFold项目的一个扩展,旨在预测蛋白质多聚体的三维结构。蛋白质多聚体是由多个蛋白质亚单位相互组装而成的结构,如酶、膜蛋白复合物和病毒颗粒。理解多聚体的结构对于揭示蛋白质的功能和相互作用非常重要。

MurphyStar的博客 5647

Google Guava 工具集__1__Optional对象设计 使用和避免 Null

/**  * 在Java世界里,解决空引用问题常见的一种办法是,使用Null Object模式。  * 这样的话,在“没有什么”的情况下,就返回Null Object,客户端代码就不用判断是否为空了。  * 但是,这种做法也有一些问题。  * 首先,我们肯定要为Null Object编写代码,而且,如果我们想大规模应用这个模式,我们要为几乎每个类编写Null Object。  *  

2.wa 2599

基于DFT的mbist sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 922

Guava Cache之返回值为null抛出异常解决方案

问题描述描述:对于方法“V get(key, loader) throws ExecutionException”loader的返回值不能为null,否则会抛出异常,文档描述如下: Warning: as with {@link CacheLoader#load}, {@code loader} must not return * {@code null}; it may eithe

04stone37 1万+

mac安全干净卸载Anaconda3

主要原因是python命令没有映射到已经安装的python版本上,则需要添加。修改~/.bash_profile文件,将anaconda相关删除。现在想卸载Anaconda,恢复使用mac系统自带的Python。最后在mac的应用目录删除Anaconda。查看所有版本的python所在安装目录。或者不使用软连接映射,也可使用。再次查看python映射。查看python版本。建立软连接,添加映射。

buyue 5962

14、多级快速多极子算法(MLFMA)详解

多级快速多极子算法(MLFMA)是一种高效加速矩阵向量乘法(MVM)的数值方法,广泛应用于电磁场积分方程求解中。该算法通过构建多级树结构,将MVM分解为近场直接计算和远场分组计算两部分,利用递归聚类、聚合-平移-分解三阶段处理远场相互作用,并结合采样、模式计算与优化策略,将计算复杂度从O(N^2)降低至O(N log N)。博文详细阐述了MLFMA的核心步骤、数学推导、计算复杂度及实际应用中的优化技术,如伽辽金方案改进、对称性利用和反插值方法,为大规模电磁问题的高效求解提供了系统性指导。

t8u9v0w1x的博客 242

探索 Guava Optional:让 null 处理更优雅

探索 Guava Optional:让 null 处理更优雅

一起coding,一起嗨。 852

智能驾驶域控制器的“终极大考”:解析EOL测试的核心价值与技术实践

在智能驾驶技术高速发展的今天,域控制器(Domain Controller)作为车辆“大脑”的核心部件,承担着传感器数据处理、决策规划、执行控制等关键任务。然而,这个集成了数十个芯片、运行着数百万行代码的复杂系统,如何确保其出厂前的功能安全与性能稳定?答案就藏在被称为“生产线最后一道防线”的EOL(End of Line)测试中。

汽车电子软件领域知识分享 704

java guava null_我应该使用Java8/Guava对于可能返回null的每个方法可选吗?

那么什么是可选的错误?我们面临的问题是:JDK 8可选对象是否会去除空引用?答案是一个强调的没有!所以,诋毁者立刻质疑它的价值问:那么什么是好的,我们不能通过其他手段已经做了?与像SML或Haskell这样从来没有空引用概念的函数语言不同,在Java中,我们不能简单地去掉历史上存在的空引用。这将继续存在,并且他们可以有其正确的用途(只提一个例子:three-valued logic)。我怀疑可选类...

weixin_39626409的博客 177

手把手教你学SIMULINK模块库文件专栏-From Workspace 模块详解

模块是 Simulink 中的一个信号源模块,用于从 MATLAB 工作区加载数据作为输入信号。该模块允许用户将预先在 MATLAB 中生成的数据(如时间序列、矩阵或结构体)导入到 Simulink 模型中,从而实现更灵活的信号输入和仿真控制。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常灵活的工具,适用于需要从 MATLAB 工作区加载数据的各种场景。

MHD0815的博客 633

剪映专业版关键帧完全教程:从原理到实战的动画必修课

关键帧是视频动画的核心原理。视频由连续静止画面(帧)构成,关键帧记录素材属性变化的起始与结束状态,中间过渡帧由软件自动计算生成。剪映专业版中,视频、音频、文本、贴纸等素材均支持关键帧动画,可调节位置、缩放、旋转、不透明度、音量等参数。操作为:在起始位置点击参数旁菱形按钮添加关键帧,移动播放头后调整参数,系统自动生成第二个关键帧。多属性可独立控制并叠加,实现放大同时淡出等复合效果。通过设定变化起点与终点,关键帧能让静止元素产生移动、缩放、淡入淡出等丰富动态,是视频剪辑从基础拼接进阶创意表达的核心技能。掌握关键

深耕计算机专业知识与技术。 2092

Guava 的 API 对字符串去空格,去空值,list去空值null

String a = ",abcd,,efg,l"; System.out.println(Splitter.on(",").trimResults().omitEmptyStrings().splitToList(a)); // 依次 join 多个字符串,Joiner 是 Guava 提供的 API Joiner joiner = Joiner.on(",").skipNulls(); String result = joiner.join("hello",..

rocrunwang的博客 1349

踩遍Windows所有坑:Codex CLI桌面端+命令行双环境安装避坑实战

Windows下装Codex CLI的坑,本质上都是Windows本身的路径、环境变量、权限、编码这些历史遗留问题,和工具本身关系不大。只要避开中文路径、正确配置PATH、注意终端环境差异,其实安装非常简单。这套双环境方案配好之后,桌面端适合可视化调试、多会话管理,终端适合嵌入编辑器、脚本调用,一套配置两边通用,体验还是很流畅的。按照上面的流程走,基本不会出大问题,就算出问题也能在排查表里找到对应解法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 300

[Google Guava] 1.1-使用和避免null

[Google Guava] 1.1-使用和避免null 原文链接 译文链接 译者: 沈义扬    Doug Lea 说,“Null 真糟糕。”   当Sir C. A. R. Hoare 使用了null引用后说,”使用它导致了十亿美金的错误。” 轻率地使用null可能会导致很多令人惊愕的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元

一个Java菜鸟(同微信公众号) 779

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

吐血整理的Google Guava

一、概述   Guava 是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。它为集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等提供实用程序方法。 <!-- https://mvn

chuyouyinghe的专栏 2874

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Google Guava简介

瓜娃(Guava)是一款基于开源JAVA内容的库,也是Google很多项目在使用的扩展库。主要为了方便编码,并有效减少编码错误。有着多种供用于集合、缓存、并发、常见注解、字符串处理、I/O与验证的方法。下面介绍几种简单的功能。Optional类com.google.common.base.Optional 用于处理包含非空对象的不可变对象,也就是在一些无法赋值,但对象还是为null的时候进行处理,也

Juses_331的博客 1430

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Google Guava学习(3)-Guava Ordering类

1. 功能:排序 2. 代码: package com.example.google.guava.demo.clazz; import com.google.common.collect.Ordering; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * *

Jalen备忘录 398

Guava中Null的处理方式

使用与避免NULL值 “Null sucks.” -Doug Lea “I call it my billion-dollar mistake.” - Sir C. A. R. Hoare, on his invention of the null reference 粗心使用null可能会导致各种错误。Google代码库大约95%的集合类中不支持存储null值,...

forrest420的专栏 1709

Guava User Guide

The Guava project contains several of Google's core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string pr...

weixin_30256901的博客 144

Google Guava与基本工具操作相关的类

文章目录1.[使用和避免使用null](https://github.com/google/guava/wiki/UsingAndAvoidingNullExplained)1.1Optional1.1.1创建Optional1.1.2查询方法1.1.3重点是什么?1.2便利方法1.3使用示例2.[前置条件](https://github.com/google/guava/wiki/Precond...

Life is for sharing的博客 857

Google Guava官方教程 使用和避免null

轻率地使用null可能会导致很多令人惊愕的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元素。我们认为, 相比默默地接受null,使用快速失败操作拒绝null值对开发者更有帮助。...

weixin_54518855的博客 442

Guava 学习

Guava 学习 一、概述 Guava是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。它为集合[collections]、缓存[caching]、原生类型支持[primitives support]、并发库[concurrency libraries]、通用注解[common annotations]、字符串处理[string processing]、I/O等等提供实用程序方法。 <!-- https://mvnrepository.

weixin_43527947的博客 825

Guava入门~Joiner

import java.io.File; import java.io.IOException; import java.io.Writer; import java.util.Map; import org.hamcrest.CoreMatchers; import org.junit.Assert; import com.google.common.base.Charsets; import com.google.common.base.Joiner; import com.google.common.

小强快跑~~ 295

Guava手册

引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有

小熊波波的专栏 978

java guava null_guava学习笔记系列 - 使用和避免null

基本的工具(更愉快的使用JAVA语言)使用和避免null个人博客http://www.taociabc.com/wordpress/2018/01/06/guava%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E7%B3%BB%E5%88%97-%E4%BD%BF%E7%94%A8%E5%92%8C%E9%81%BF%E5%85%8Dnull/详细的英文原文:https...

weixin_42514736的博客 215

跟着文档从零学习Google Guava

跟着文档从零学习Google Guava

ShayeL的博客 417
上一篇: CSS 定位属性
下一篇: java 证书的加密与解密
「已注销」
博客等级 码龄16年 3粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值