[Google Guava] 9-I/O
【吐血整理】想学Google Guava看这篇就够了「建议收藏」
Guava是谷歌提供的一个核心Java类库,其中包括新的集合类型、不可变集合、图库,以及用于并发、I/O、Hash、缓存、字符串等的 实用工具。它在谷歌中的大多数Java项目中被广泛使用,也被许多其他公司广泛使用,熟练掌握这些工具类能帮助我们快速的处理日常开发中的一些问题,比如,不可变集合、集合的转换、字符串处理、本地缓存等最近一段时间,我把Guava中常用到的工具类学了一遍,感觉有些工具类还是
日期 2023-06-12 10:48:40Google Guava Stopwatch(计时器)详解编程语言
此页面是否是列表页或首页?未找到合适正文内容。
日期 2023-06-12 10:48:40[Google Guava] 8-区间
区间,有时也称为范围,是特定域中的凸性(非正式说法为连续的或不中断的)部分。在形式上,凸性表示对a =b =c, range.contains(a)且range.contains(c)意味着range.contains(b)。 区间可以延伸至无限——例如,范围”x 3″包括任意大于3的值——也可以被限制为有限,如” 2 =x 5″。Guava用更紧凑的方法表示范围,有数学背景的程序员对此是耳熟能
日期 2023-06-12 10:48:40[Google Guava] 4-函数式编程
原文链接 译文链接 译者:沈义扬,校对:丁一 截至JDK7,Java中也只能通过笨拙冗长的匿名类来达到近似函数式编程的效果。预计JDK8中会有所改变,但Guava现在就想给JDK5以上用户提供这类支持。 过度使用Guava函数式编程会导致冗长、混乱、可读性差而且低效的代码。这是迄今为止最容易(也是最经常)被滥用的部分,如果你想通过函数式风格达成一行代码,致使这行代码长到荒唐,Guava团队会泪
日期 2023-06-12 10:48:40[Google Guava] 7-原生类型
Bytes工具类没有定义任何区分有符号和无符号字节的方法,而是把它们都放到了SignedBytes和UnsignedBytes工具类中,因为字节类型的符号性比起其它类型要略微含糊一些。 int和long的无符号形式方法在UnsignedInts和UnsignedLongs类中,但由于这两个类型的大多数用法都是有符号的,Ints和Longs类按照有符号形式处理方法的输入参数。 此外,Guava为
日期 2023-06-12 10:48:40[Google Guava] 2.4-集合扩展工具类
原文链接 译文链接 译者:沈义扬,校对:丁一 有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集。Guava为你,也为我们自己提供了若干工具方法,以便让类似的工作变得更简单。(毕竟,我们自己也要用这些工具扩展集合框架。) Forwarding装饰器 针对所有类型的集合接口,Guava都提供了Fo
日期 2023-06-12 10:48:40[Google Guava] 2.2-新集合类型
这种写法很笨拙,也容易出错,并且不支持同时收集多种统计信息,如总词数。我们可以做的更好。 Guava提供了一个新集合类型 Multiset,它可以多次添加相等的元素。维基百科从数学角度这样定义Multiset:”集合[set]概念的延伸,它的元素可以重复出现…与集合[set]相同而与元组[tuple]相反的是,Multiset元素的顺序是无关紧要的:Multiset {a, a, b}和{a,
日期 2023-06-12 10:48:40[Google Guava] 1.3-常见Object方法
注意:JDK7引入的Objects类提供了一样的方法Objects.equals。 hashCode 用对象的所有字段作散列[hash]运算应当更简单。Guava的Objects.hashCode(Object...)会对传入的字段序列计算出合理的、顺序敏感的散列值。你可以使用Objects.hashCode(field1, field2, …, fieldn)来代替手动计算散列值。 注
日期 2023-06-12 10:48:40google Guava包的ListenableFuture解析
接口 传统JDK中的Future通过异步的方式计算返回结果:在多线程运算中可能或者可能在没有结束返回结果,Future是运行中的多线程的一个引用句柄,确保在服务执行返回一个Result。 ListenableFuture可以允许你注册回调方法(callbacks),在运算(多线程执行)完成的时候进行调用, 或者在运算(多线程执行)完成后立即执行。这样简单的改进,使得可以明显的支持更多的操作,
日期 2023-06-12 10:48:40Google Guava之--cache
ss
日期 2023-06-12 10:48:40Google Guava官方教程(中文版)
原文链接 译文链接 译者: 沈义扬,罗立树,何一昕,武祖 校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、
日期 2023-06-12 10:48:40google Guava包的reflection解析
译者:万天慧(武祖) 由于类型擦除,你不能够在运行时传递泛型类对象——你可能想强制转换它们,并假装这些对象是有泛型的,但实际上它们没有。 举个例子: ArrayList String stringList = Lists.newArrayList(); ArrayList Integer intList = Lists.newArrayList(); System.out.println
日期 2023-06-12 10:48:40[Google Guava] 10-散列
原文链接 译文链接 译者:沈义扬 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换。此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它们最终都依赖于JDK类中已有的劣质散列码。 Object.hashCode往往很快,但是在预防碰撞上却很弱,也没有对分散性的预期。这使得它们很适合在散列表中运用,因为额
日期 2023-06-12 10:48:40[Google Guava] 2.2-新集合类型
原文链接 译文链接 译者:沈义扬,校对:丁一 Guava引入了很多JDK没有的、但我们发现明显有用的新集合类型。这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念。作为一般规则,Guava集合非常精准地遵循了JDK接口契约。 Multiset 统计一个词在文档中出现了多少次,传统的做法是这样的: Map String, Integer counts = new Ha
日期 2023-06-12 10:48:40[Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
此外,通过为工厂方法命名(Effective Java第一条),我们可以提高集合初始化大小的可读性: 确切的静态工厂方法和相应的工具类一起罗列在下面的章节。 注意:Guava引入的新集合类型没有暴露原始构造器,也没有在工具类中提供初始化方法。而是直接在集合类中提供了静态工厂方法,例如: Iterables 在可能的情况下,Guava提供的工具方法更偏向于接受Iterable而不是Colle
日期 2023-06-12 10:48:40[Google Guava] 1.5-Throwables:简化异常和错误的传播与检查
所有这些方法都会自己决定是否要抛出异常,但也能直接抛出方法返回的结果——例如,throw Throwables.propagate(t);—— 这样可以向编译器声明这里一定会抛出异常。 Guava中的异常传播方法简要列举如下: RuntimeException propagate(Throwable) 如果Throwable是Error或RuntimeException,直接抛出;否则把
日期 2023-06-12 10:48:40[Google Guava] 1.3-常见Object方法
注意:JDK7引入的Objects类提供了一样的方法Objects.equals。 hashCode 用对象的所有字段作散列[hash]运算应当更简单。Guava的Objects.hashCode(Object...)会对传入的字段序列计算出合理的、顺序敏感的散列值。你可以使用Objects.hashCode(field1, field2, …, fieldn)来代替手动计算散列值。 注
日期 2023-06-12 10:48:40