Guava
GarfieldEr007
这个作者很懒,什么都没留下…
展开
-
Google Guava官方教程(中文版)
原文链接 译文链接 译者: 沈义扬,罗立树,何一昕,武祖 校对:方腾飞引言Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、...转载 2018-12-30 21:02:17 · 697 阅读 · 1 评论 -
Guava函数式编程
本章节主要介绍以下几个接口和类:Function和Functions Predicate和Predicates Supplier和SuppliersFunction和Functions使用Function接口 Function接口中只定义了两个方法: public interface Function<F,T> { T apply(F input); ...转载 2019-01-11 22:06:05 · 823 阅读 · 0 评论 -
[Google Guava] 3-缓存
原文地址 译文地址 译者:许巧辉 校对:沈义扬范例01 LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() 02 .maximumSize(1000) 03 .expireAfterWrite(10, TimeUnit.MINUTES) 0...转载 2018-12-31 12:03:26 · 607 阅读 · 0 评论 -
[Google Guava] 11-事件总线
原文链接 译文连接 译者:沈义扬传统上,Java的进程内事件分发都是通过发布者和订阅者之间的显式注册实现的。设计EventBus就是为了取代这种显示注册方式,使组件间有了更好的解耦。EventBus不是通用型的发布-订阅实现,不适用于进程间通信。范例01 // Class is typically registered by the container. 02 clas...转载 2018-12-31 12:03:19 · 622 阅读 · 0 评论 -
[Google Guava] 1.3-常见Object方法
原文链接 译者: 沈义扬equals当一个对象中的字段可以为null时,实现Object.equals方法会很痛苦,因为不得不分别对它们进行null检查。使用Objects.equal帮助你执行null敏感的equals判断,从而避免抛出NullPointerException。例如:1 Objects.equal("a", "a"); // returns true 2 ...转载 2018-12-31 12:03:11 · 549 阅读 · 0 评论 -
[Google Guava] 2.4-集合扩展工具类
原文链接 译文链接 译者:沈义扬,校对:丁一简介有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集。Guava为你,也为我们自己提供了若干工具方法,以便让类似的工作变得更简单。(毕竟,我们自己也要用这些工具扩展集合框架。)Forwarding装饰器针对所有类型的集合接口,Guava都提...转载 2018-12-31 12:03:03 · 604 阅读 · 0 评论 -
[Google Guava] 8-区间
原文链接 译文链接 译文:沈义扬范例1 List scores; 2 Iterable belowMedian =Iterables.filter(scores,Range.lessThan(median)); 3 ... 4 Range validGrades = Range.closed(1, 12); 5 for(int grade : ...转载 2018-12-31 12:02:56 · 586 阅读 · 1 评论 -
[Google Guava] 6-字符串处理:分割,连接,填充
原文链接 译文链接 译者:沈义扬,校对:丁一连接器[Joiner]用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦。如果字符串序列中含有null,那连接操作会更难。Fluent风格的Joiner让连接字符串更简单。1 Joiner joiner = Joiner.on("; ").skipNulls(); 2 return joiner.join("Harry", ...转载 2018-12-31 12:02:47 · 888 阅读 · 0 评论 -
[Google Guava] 1.1-使用和避免null
原文链接 译文链接 译者: 沈义扬 Doug Lea 说,“Null 真糟糕。” 当Sir C. A. R. Hoare 使用了null引用后说,”使用它导致了十亿美金的错误。”轻率地使用null可能会导致很多令人惊愕的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元素。我们认为, 相比默默地接受null,使用快速失败操作拒绝null值对开发者更...转载 2018-12-31 12:02:40 · 553 阅读 · 0 评论 -
[Google Guava] 4-函数式编程
原文链接 译文链接 译者:沈义扬,校对:丁一注意事项截至JDK7,Java中也只能通过笨拙冗长的匿名类来达到近似函数式编程的效果。预计JDK8中会有所改变,但Guava现在就想给JDK5以上用户提供这类支持。过度使用Guava函数式编程会导致冗长、混乱、可读性差而且低效的代码。这是迄今为止最容易(也是最经常)被滥用的部分,如果你想通过函数式风格达成一行代码,致使这行代码长到荒唐,Gua...转载 2018-12-31 12:02:33 · 588 阅读 · 0 评论 -
[Google Guava] 9-I/O
原文链接 译文链接 译者:沈义扬字节流和字符流Guava使用术语”流” 来表示可关闭的,并且在底层资源中有位置状态的I/O数据流。术语”字节流”指的是InputStream或OutputStream,”字符流”指的是Reader 或Writer(虽然他们的接口Readable 和Appendable被更多地用于方法参数)。相应的工具方法分别在ByteStreams 和CharStreams...转载 2018-12-30 21:09:53 · 555 阅读 · 0 评论 -
[Google Guava] 1.2-前置条件
原文链接 译文链接 译者: 沈义扬前置条件:让方法调用的前置条件判断更简单。Guava在Preconditions类中提供了若干前置条件判断的实用方法,我们强烈建议在Eclipse中静态导入这些方法。每个方法都有三个变种:没有额外参数:抛出的异常中没有错误消息; 有一个Object对象作为额外参数:抛出的异常使用Object.toString() 作为错误消息; 有一个String...转载 2018-12-30 21:09:11 · 606 阅读 · 0 评论 -
[Google Guava] 10-散列
原文链接 译文链接 译者:沈义扬概述Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换。此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它们最终都依赖于JDK类中已有的劣质散列码。Object.hashCode往往很快,但是在预防碰撞上却很弱,也没有对分散性的预期。这使得它们很适合在散列表中运用...转载 2018-12-30 21:08:22 · 569 阅读 · 0 评论 -
[Google Guava] 2.1-不可变集合
原文链接 译者:沈义扬范例01 public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of( 02 "red", 03 "orange", 04 "yellow", 05 "green",...转载 2018-12-30 21:07:37 · 571 阅读 · 0 评论 -
[Google Guava] 排序: Guava强大的”流畅风格比较器”
原文链接 译者: 沈义扬排序器[Ordering]是Guava流畅风格比较器[Comparator]的实现,它可以用来为构建复杂的比较器,以完成集合排序的功能。从实现上说,Ordering实例就是一个特殊的Comparator实例。Ordering把很多基于Comparator的静态方法(如Collections.max)包装为自己的实例方法(非静态方法),并且提供了链式调用方法,来定制和...转载 2018-12-30 21:06:54 · 612 阅读 · 0 评论 -
[Google Guava] 12-数学运算
原文链接 译文链接 译者:沈义扬范例1 int logFloor = LongMath.log2(n, FLOOR); 2 int mustNotOverflow = IntMath.checkedMultiply(x, y); 3 long quotient = LongMath.divide(knownMultipleOfThree, 3, RoundingM...转载 2018-12-30 21:06:03 · 655 阅读 · 0 评论 -
[Google Guava] 7-原生类型
原文链接 译文链接 译者:沈义扬,校对:丁一概述Java的原生类型就是指基本类型:byte、short、int、long、float、double、char和boolean。在从Guava查找原生类型方法之前,可以先查查Arrays类,或者对应的基础类型包装类,如Integer。原生类型不能当作对象或泛型的类型参数使用,这意味着许多通用方法都不能应用于它们。Guava提供了若干通用...转载 2018-12-30 21:05:08 · 618 阅读 · 0 评论 -
如何优雅的找出ArrayList中的重复元素?
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("string1"); list.add("string1"); list.add("string1"); ...转载 2019-01-11 22:09:33 · 2264 阅读 · 0 评论