Google Guava 类库简介

摘要:
让我们简单介绍一下Guava的一般功能!许多Guava工具类在遇到null时会直接拒绝或出错,而不是默默接受它们。4.排序:Guava强大的“流畅比较器”比较器提供多关键字排序。缓存本地缓存可以方便缓存对象的操作,并支持各种缓存失效行为模式。Guava实现了Java函数式编程,可以显著简化代码。Ranges Guava是一个强大的API,它提供可比较类型的范围处理,包括连续和离散情况。

  Guava 是一个 Google开发的 基于java的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVA代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我们就简单的介绍一下Guava的大致的功能!

  Guava项目托管在github上,可以使用sudo git clone https://github.com/google/guava.git下载Guava源码,从源码可以看到,Guava主要有下面的几个包:
  annotations:普通注解类型

  base:基本工具类库和接口

  Cache:缓存工具包,非常简单易用且功能强大的JVM内缓存

  collect:带泛型的集合接口扩展和实现,以及工具类,这里你会发现很多好玩的集合

  eventbus:发布订阅风格的事件总线

  hash: 哈希工具包

  io:IO工具包

  math:数学计算工具包

  net:网络工具包

  primitives:八种原始类型和无符号类型的静态工具包

  reflect:反射工具包

  concurrent:并发编程工具包

  escape:转义工具

  graph:处理基于图的数据结构

  HTML:Html字符串转义

  XML:xml字符串转义

Guava的使用

  基础工具

  1. 使用和避免 null:null 有语言歧义, 会产生令人费解的错误, 反正他总是让人不爽。很多 Guava 的工具类在遇到 null 时会直接拒绝或出错,而不是默默地接受他们。
  2. 前提条件:更容易的对你的方法进行前提条件的测试。
  3. 常见的对象方法: 简化了Object常用方法的实现, 如 hashCode() 和 toString()。
  4. 排序: Guava 强大的 "fluent Comparator"比较器, 提供多关键字排序。
  5. Throwable类: 简化了异常检查和错误传播

  集合类

  1. Immutable collections(不变的集合): 防御性编程, 不可修改的集合,并且提高了效率。
  2. New collection types(新集合类型):JDK collections 没有的一些集合类型,主要有:multisets,multimaps,tables, bidirectional maps等等
  3. Powerful collection utilities(强大的集合工具类): java.util.Collections 中未包含的常用操作工具类
  4. Extension utilities(扩展工具类): 给 Collection 对象添加一个装饰器? 实现迭代器? 我们可以更容易使用这些方法。

  缓存

   本地缓存,可以很方便的操作缓存对象,并且支持各种缓存失效行为模式

  Functional idioms(函数式)

  简洁, Guava实现了Java的函数式编程,可以显著简化代码。

  并发

  1. ListenableFuture(可监听的Future): Futures,用于异步完成的回调。
  2. Service: 控制事件的启动和关闭,为你管理复杂的状态逻辑。

  String处理

  一个非常非常有用的字符串工具类: 提供 splitting,joining, padding 等操作。

  Primitives

  扩展 JDK 中未提供的对原生类型(如int、char等)的操作, 包括某些类型的无符号的变量。

  Ranges

  Guava 一个强大的 API,提供 Comparable 类型的范围处理, 包括连续和离散的情况。

  IO

  简化 I/O 操作, 特别是对 I/O 流和文件的操作

  HASH

   提供比 Object.hashCode() 更复杂的 hash 方法, 提供 Bloom filters

  EventBus

  基于发布-订阅模式的组件通信,但是不需要明确地注册在委托对象中

  Math

  优化的 math 工具类

  Reflection

  Guava 的 Java 反射机制工具类

  

免责声明:文章转载自《Google Guava 类库简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇idea安装完成后点击没反应 打不开C# 文本框 TextChanged 延时触发下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

利用H5缓存机制实现点击按钮第一次与之后再点击分别跳转不同页面

昨天碰到这样一个需求,要求点击按钮第一次跳转到a页面,之后再点击它就跳转到b页面。这个问题我首先就想到了利用H5的缓存sessionstorage来实现,SessionStorage用于本地存储一个会话中的数据,窗口关闭后,数据就会消失。是一种会话级别的存储。 sessionStorage: sessionStorage.setItem("key","1"...

Wireshark抓包深入分析一下Ping的过程

一、概览 对于ping命令,想必只要是程序员都知道吧?当我们检查网络情况的时候,最先使用的命令肯定是ping命令吧?一般我们用ping查看网络情况,主要是检查两个指标,第一个是看看是不是超时,第二个看看是不是延迟太高。如果超时那么肯定是网络有问题啦(禁ping情况除外),如果延迟太高,网络情况肯定也是很糟糕的。那么对于ping命令的原理,ping是如何检查...

chrome内核浏览器缓存资源找回方法

曾几何时,用chrome浏览器看了某个图片,网页,视频等,当时没保存,后来再怎么找都找不到了,chrome还把缓存加密了,不能像ie那样找回,这世上有买后悔药的吗?还真有! 搜索chromeCacheView即可。 软件是英文的,使用方法自己看单词。提示:可以一键复制出来的。 一个只有65kb的小软件,却能在关键时候帮上你的大忙。 ps,随笔记事,以免遗忘...

jsdelivr 缓存刷新

CDN 缓存 jsDelivr 提供的全球 CDN 加速,CDN的分流作用不仅减少了用户的访问延时,也减少的源站的负载。但其缺点也很明显:当网站更新时,如果CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl +F5的方式使浏览器端的缓存失效,也会因为CDN边缘节点没有同步最新数据而导致用户端未能及时更新。 CDN边缘节点对开发者是透明的,相比于浏览...

手把手教学在Springboot中搭建使用Guava cache,包教包会,不会我输一包辣条给你

 guava cache使用简介   概述   缓存是日常开发中经常应用到的一种技术手段,合理的利用缓存可以极大的改善应用程序的性能。   Guava官方对Cache的描述连接   缓存在各种各样的用例中非常有用。例如,当计算或检索值很昂贵时,您应该考虑使用缓存,并且不止一次需要它在某个输入上的值。   缓存ConcurrentMap要小,但不完全相同。最...

ngx_lua应用最佳实践

引子: 以下文字,是UPYUN系统开发工程师timebug在SegmentFault D-Day南京站技术沙龙上所做分享的内容要义提炼,主题为UPYUN系统开发团队在进行业务逻辑由C模块到ngx_lua的迁移过程中产生的心得体会,以及在NGINX上基于ngx_lua的方面的最佳实践方案。 Upyun公众号:upaiyun -----------------...