代码改变世界

随笔分类 -  Guava

Guava学习笔记(6)-- ImmutableCollections简介

2012-10-17 14:35 by 会被淹死的鱼, 1343 阅读, 收藏, 编辑
摘要: Immutable是不可变的,不可变的对象本身是有很多优点的,包括可以在未受信任的类库中安全的使用这些对象线程安全的:可以被多线程使用,而且不存在竞争问题不需要支持可变性, 可以尽量节省空间和实践开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)可以被使用为一个常量,并且期望在未来也是保持不变的不可变对象的复制是一种很好的防卫性编程技巧,Guava提供了与所有标准集合对应的不可变集合,也包括了Guava自身扩展的一些集合。JDK提供了Collections.unmodifiableXXX系列方法, 但是有自身的一些问题使用不是很广泛,而且繁琐;在进制防卫性复制的时 阅读全文

Guava学习笔记(5)--Throwables简化异常处理

2012-10-14 22:21 by 会被淹死的鱼, 666 阅读, 收藏, 编辑
摘要: 有时候, 我们需要捕获异常, 你想要传递异常到下一个try/catch块中. RuntimeException或Error是不强制捕获的.Guava提供了一些工具类, 可以简单地捕获和重新抛出多个异常.1 try {2 someMethodThatCouldThrowAnything();3 } catch (IKnowWhatToDoWithThisException e) {4 handle(e);5 } catch (Throwable t) {6 Throwables.propagateIfInstanceOf(t, IOExceptio... 阅读全文

Guava学习笔记(4)--Ordering简介[翻译+学习笔记]

2012-10-14 21:35 by 会被淹死的鱼, 1972 阅读, 收藏, 编辑
摘要: Ordering是Guava最常用的Comparator类, 可以用来操作, 扩展和使用comparators.自定义比较器, 进行排序判断, 进行排序, 获取最大最小值, 获取最大最小的前几个值等方法.几个常用的static方法, 提供了三种常用的比较器方法描述natural()使用Comparable类型的自然顺序, 例如, 整数从小到大, 字符串是按字典顺序.usingToString()使用toString()返回的字符串按字典顺序进行排序arbitrary()返回一个所有对象的任意顺序, 即compare(a, b) == 0 就是 a == b (identity equality 阅读全文

Guava学习笔记(3)--覆写Object的常用方法[翻译+学习笔记]

2012-06-30 17:43 by 会被淹死的鱼, 1123 阅读, 收藏, 编辑
摘要: Java的Object是所有类的父类, 也有几个常用的需要覆写的方法, 比如equals, hashCode和toString.每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, 比如apache commons lang.Guava也提供了类似的方式, 在JDK7也提供了和Guava类似的方法.equalsequals是一个经常需要覆写的方法, 可以查看Object的equals方法注释, 对equals有几个性质的要求: 自反性reflexive, 对称性symmetric, 传递性transitive, 一致性consistent. 还有一个要求: 对于所有 阅读全文

Guava学习笔记(2)--使用Preconditions作参数的预判断[翻译+学习笔记]

2012-06-27 18:57 by 会被淹死的鱼, 3034 阅读, 收藏, 编辑
摘要: Guava中提供了一个作参数检查的工具类--Preconditions, 静态导入这个类, 可以大大地简化代码中对于参数的预判断和处理.import static com.google.common.base.Preconditions.*;在以前, 我们需要判断一个参数不为空的话, 需要像下面这样写 public void testMethod(Object obj) { if (obj == null) { throw new NullPointerException(); } // ... other operations }每次都要添加if语句来做判断, 重复的工作会做好多次... 阅读全文

Guava学习笔记(1)--安全地使用null(Using and avoiding null)

2012-06-20 20:26 by 会被淹死的鱼, 3107 阅读, 收藏, 编辑
摘要: Guava是一个基于java1.6的类库集合, 包含了几个google的核心库, collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等库, 这些工具都使用在google的生产环境.使用Guava很简单, 只需要包含他的库文件既可.官方网址: http://code.google.com/p/guava-libraries/null是一个特殊的值, 却经常是有着实在含义的, null可以表达失败, 可以表示成功, 可以表示任何我们定义 阅读全文