摘要:
Immutable集合作为Guava提供的集合类型,并没有脱离集合的接口,例如ImmutableList依然实现List接口。但接下来几章要分析的Multi Collections则几乎脱离了JAVA原本所带的集合(这也是为什么Multixxx,代表集合数据结构的单词为小写),作为了JAVA集合的一... 阅读全文
摘要:
Immutable的集合体系,还有中很重要的集合没有介绍,就是ImmutableMap,通过UML图,可以看出ImmutableMap的结构体系。首先来看一下ImmutableBiMap,因为普通ImmutableMap的实现依赖于它。ImmutableBiMap在ImmutableMap的基础上,... 阅读全文
摘要:
这一次,我们来分析ImmutableSet,与ImmutableList大同小异,建议大家先看完上一篇Immutable Collections(2),在继续往下看相同:ImmutableSet底层也采用数组实现of()、copyOf()方法实现逻辑也相同元素也是按传入顺序排列的实现是根据元素个数,... 阅读全文
摘要:
分析过Immutable Collections后,进入具体的数据结构来分析,这一次我们来看看ImmutableList。作为线性可重复集合,ImmutableList的底层实现采用了数组,因为不可变集合,就不存插入删除的操作。数组的下标使得根据index的read的操作,时间复杂度变为了O(1)。... 阅读全文
摘要:
在Java中,conrrent包提供了很多线程安全的集合,但有的时候我们可以换一种方式对思考使用线程安全集合,Guava的Immutable提供了一系列不可变集合类型,不可变就使得集合成为了常量,常量必然线程安全。对于集合的不可变,除了Guava提供的Immutable Collections以外,... 阅读全文
摘要:
Objects工具类,可以分为两部分来分析。一部分是equals()和hashcode()方法的支持。另一部分是toString()和compareTo()的链式调用的支持。对于equals()方法,Guava的Objects类提供了如下支持:public static boolean equal(... 阅读全文
摘要:
毋庸置疑,Ordering肯定实现了Comparator接口,这是Java中比较排序使用的。而其中的静态方法返回一种类型的Ordering,不同的Ordering子类实现各自的compare()方法,如下所示:public static Ordering natural() { return (... 阅读全文
摘要:
Preconditions作为Guava中异常的前置检查,提供了一系列方法。从源码的实现中可以看出,所有的方法都满足以下形式(除format()方法以外)。if (!status) { throw new xxException();}例如:public static void checkAr... 阅读全文
摘要:
Google的Guava库的出现,使Java代码的书写更加流畅,无论是从效率还是代码风格上,Guava都必将成为一种趋势(Java8明显可以看出,大多数的功能开始借鉴Guava),今天开始,PoNa就以自己微薄的水平试着分析一下Guava的源码,借此使自己更上一层楼,还请各位多多扔砖。Guava文档... 阅读全文