Google Guava

2023-11-06

转载自并发编程网 – ifeve.com 本文链接地址: Google Guava官方教程(中文版)

中文文档:http://ifeve.com/google-guava/
开源地址:https://github.com/google/guava

今天偶然发现一个不错的开源项目,就急着把干货分享出来。

下面小哥就一一引用道来,所谓抛砖引玉,各自修行。

Guava工程包含了若干被GoogleJava项目广泛依赖的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。

1. 基本工具 [Basic utilities]

让使用Java语言变得更舒适

  • 使用和避免null:null是模棱两可的,会引起令人困惑的错误,有些时候它让人很不舒服。很多Guava工具类用快速失败拒绝null值,而不是盲目地接受
  • 前置条件: 让方法中的条件检查更简单
  • 常见Object方法: 简化Object方法实现,如hashCode()和toString()
  • 排序: Guava强大的”流畅风格比较器”
  • Throwables:简化了异常和错误的传播与检查

2. 集合[Collections]

Guava对JDK集合的扩展,这是Guava最成熟和为人所知的部分

  • 不可变集合: 用不变的集合进行防御性编程和性能提升。
  • 新集合类型: multisets, multimaps, tables, bidirectional maps等
  • 强大的集合工具类: 提供java.util.Collections中没有的集合工具
  • 扩展工具类:让实现和扩展集合类变得更容易,比如创建Collection的装饰器,或实现迭代器

3.缓存[Caches]

Guava Cache:本地缓存实现,支持多种缓存过期策略

4.函数式风格[Functional idioms]

Guava的函数式支持可以显著简化代码,但请谨慎使用它

5.并发[Concurrency]

强大而简单的抽象,让编写正确的并发代码更简单

  • ListenableFuture:完成后触发回调的Future
  • Service框架:抽象可开启和关闭的服务,帮助你维护服务的状态逻辑

6. 字符串处理[Strings]

非常有用的字符串工具,包括分割、连接、填充等操作

7. 原生类型[Primitives]

扩展 JDK 未提供的原生类型(如int、char)操作, 包括某些类型的无符号形式

8. 区间[Ranges]

可比较类型的区间API,包括连续和离散类型

9. I/O

简化I/O尤其是I/O流和文件的操作,针对Java5和6版本

10. 散列[Hash]

提供比Object.hashCode()更复杂的散列实现,并提供布鲁姆过滤器的实现

11. 事件总线[EventBus]

发布-订阅模式的组件通信,但组件不需要显式地注册到其他组件中

12. 数学运算[Math]

优化的、充分测试的数学工具类

13. 反射[Reflection]

Guava 的 Java 反射机制工具类

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Guava 的相关文章

随机推荐

  • XML外部实体漏洞(XXE)详解与编程

    XML外部实体漏洞 XXE 详解与编程 XML外部实体漏洞 XXE 是一种常见的网络安全漏洞 它允许攻击者通过操纵XML解析器来访问和读取服务器上的文件 甚至执行远程代码 本文将详细介绍XXE漏洞的原理和常见的攻击方式 并提供相应的源代码示
  • idea实现类快捷生成接口方法

    接口类 实现类 当我们实现了接口后 并没有像eclipse那样 鼠标放上去就会提示生成接口方法 鼠标定位到UserService类后面 快捷键 Alt Enter 选择Implement methods 选中点OK就自动生成了 还有一种方法
  • 《C++ Primer》读书笔记第十六章-1-定义模板

    笔记会持续更新 有错误的地方欢迎指正 谢谢 这一章特别实用 神器 gt 模板 泛型编程能处理在编译之前类型不知道的情况 在编译时获知类型 比如我们学过的容器 迭代器和算法都是泛型编程 模板是C 中泛型编程的基础 记住 一个模板就是一个创建类
  • netCDF文件的scale_factor和add_offset

    我使用python的netCDF4读取数据 发现数据集存在scale factor和add offset 但是我读取的数据应该是Unpacking data 也就是转换后的实际数据 不需要再处理 因为数据压缩是通过偏移和缩放之后将浮点数转化
  • 【C++】const修饰的成员函数

    在日常学习中总是碰到const修饰的成员函数 自己也总是稀里糊涂的 只能是靠着编译器来区分const和非const成员函数的相互调用关系 今天在这里总结以下 一 const修饰成员函数的格式 在成员函数的后边加上const void dis
  • NUC980开源项目11-启动方式

    上面是我的微信和QQ群 欢迎新朋友的加入 项目码云地址 国内下载速度快 https gitee com jun626 nuc980 open source project 项目github地址 https github com Jun117
  • Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤

    之前在https blog csdn net fengbingchun article details 51628957 中描述过如何在Windows上搭建Tesseract OCR开发环境 那时除了需要clone https github
  • MySQL——事务和视图

    2023 9 17 本章开始介绍TCL语言 Transaction Control Language 事务控制语言 事务 事务的概念 一个或一组sql语句组成一个执行单元 这个执行单元要么全部执行 要么全部不执行 事务的特性 ACID 原子
  • scala---spark本地调式远程获取hdfs数据注意事项

    文章目录 前言 一 Hadoop配置注意事项 1 1 core site xml 1 2 core site xml 二 本地hadoop环境配置注意事项 三 本地scala项目spark代码调试 总结 前言 这篇文章主要帮大家绕开一些本地
  • 异常关机后Oracle无法正常连接,使用 conn /as sysdba 出现 ORA-01034 和 ORA-27101: shared memory realm does not exist...

    最近异常关机导致oracle无法连接 一直提示ORA 01034和ORA 27101的错误 打开cmd后 输入 sqlplus npolog conn as sysdba 提示 ORA 01034 Oracle not available
  • windows10使用WSL安装Linux(以ubuntu为例)

    1 安装工具WSL 适用于 Linux 的 Windows 子系统 WSL 可让开发人员直接在 Windows 上按原样运行 GNU Linux 环境 包括大多数命令行工具 实用工具和应用程序 且不会产生传统虚拟机或双启动设置开销 是win
  • 浙大水业oa系统服务器地址,OA系统

    OA系统功能定位于知识管理 企业决策支持 资源共享和企业协同工作 它由单纯的办公自动化向提升到协助管理整个企业为目标 表现在以下四个方面 把协同工作融入业务流程中 团队中通过及时的交流 准确的任务分派从而实现高绩效管理 E OFFICE办公
  • 通过js修改网页内容

    js可以通过文本所在标签的id获取该标签对象 然后修改其内容 如 document getElementById 标签id innerHTML 要修改的文本内容 该方法可以在要修改的文本内容中加html标签 如果只是纯文本的话 可以使用in
  • 严重性 代码 说明 项目 文件 行 禁止显示状态

    严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 public void thiscall LinkedList
  • 解决ubuntu无法输入中文标点

    使用Ctrl 切换
  • ListBox控件 滚动条

    今天在使用LISTBOX控件中遇到的一点小问题 主要是两个问题 水平滚动条不显示内容 垂直滚动条没有自动滚动 在网上查了一下找到了解决办法 原来只需要向控件发送消息就行了 具体代码如下 以下都是在Dialog类中的函数操作 如果是使用 Se
  • C++编程规范(101条规则、准则与最佳实践)

    C 编程规范 101条规则 准则与最佳实践 虽然是书本的目录 但也是高度的概括和总结 组织和策略问题 第0条 不要拘泥于小节 了解哪些东西不应该标准化 第1 条 在高警告级别干净利落地进行编译 第2 条 使用自动构建系统 第3 条 使用版本
  • 解决uniapp在微信小程序显示图片/数据,h5不显示图片/数据。

    配置跨域 首先在mainifest json中的源码视图中配置跨域 h5 devServer port 8080 disableHostCheck true proxy dpc target https www edonguoji cn c
  • Linux系统编程之常用线程同步的三种方法

    Linux系统编程之线程同步高效率编程 Linux系统中线程最大的特点就是共享性 线程同步问题较为困难也很重要 最常用的三种是 条件变量 互斥锁 无名信号量 ps 有名信号量可用于进程同步 无名信号量只能用于线程同步 是轻量级的 一 互斥锁
  • Google Guava

    转载自并发编程网 ifeve com 本文链接地址 Google Guava官方教程 中文版 中文文档 http ifeve com google guava 开源地址 https github com google guava 今天偶然发