使用Google Collections, Guava, and Static Imports来简化你的Java代码

artima-logo
Java程序员经常会有这样的抱怨:在Java里,一些常见的功能却需要大段的代码去实现。有些人试图去寻找一种更简洁的、能够作为替代品的其它JVM语言,另外一些人却在致力于从API层扩展现有的各种Java特性来解决Java的繁冗的问题。

最近有两个以扩展API为途径的范例项目,它们是Google的Collections 和 Guava 类库。不久前的一篇博客,“ 使用 Google Collections, Guava and Static Imports 美化你的代码(英文) ”里,Aleksander Stensby 列举了这些类库是如何让Java编程更有效率的:

Guava目前还是个很不成熟的类库,在未来的几个月里它将会有很多的改动 …  Google Collections一旦发布了它的1.0版本就会并入Guava、成为Guava的一部分。Guava(和Google Collections)是由几个Google开发人员创建的,这个类库将会广泛的使用在他们的“无数的Java项目 … ”里。

使用Guava里的Collections,你将受益不菲。它能大量减少你工程里那些样本式的代码 (同时你还能使用它提供的新的速度更快的数据结构!).

作为一个例子,Stensby展示里如何使用Google Collections来创建collection实例:

Map<String, Map<Long, List<String>>> map =
                           new HashMap<String, Map<Long,List<String>>>();

Map<String, Map<Long, List<String>>> map = Maps.newHashMap();

Map<String, Map<Long, List<String>>> map = newHashMap();

真是非常的感谢泛型技术和这些Collections工具提供的轻巧的构建方法,我们不再需要去写那些Java实际已经知道的东西,不是吗?… 我知道这些用法将会在JDK7里出现,这是个好消息。但Google Collections现在就实现了这些 …

.跟 com.google.common.collect.Maps 里提供的这些静态方法类似,我们还可以使用 ListsSets

Lists.newArrayList();
Sets.newHashSet();

Stensby 还演示了如何给这些collection初始化值:

ImmutableList<String> of = ImmutableList.of("a", "b", "c", "d");

ImmutableMap<String,String> map =
                ImmutableMap.of("key1", "value1", "key2", "value2");

除了能轻巧简洁的创建collections、操作collections之外,它还提供了大量的其他有用的方法,例如过滤、set 切片和联合、排序以及一些纯功能性的东西!

在博客的第二部分里,Stensby的介绍转向了Guava类库:

Guava对Java核心类库进行了广泛的扩展。其中包括我们可以通过 com.google.common.primitives 包里的 Ints, Doubles, Floats, Shorts, Bytes and Bools 类对基本数据类型进行各种操作。 在 com.google.common.io 这个包里提供了操作 streams, buffers, files 等等的工具,在concurrent 包里提供了一些Futures,
Callables and Executors 之类的类,它们能帮我们免去写并发程序代码的痛苦。除了这些,Guava 还提供了一些Collections处理的其它方法,还有一个十分简洁的 CharMatcher 类, Joiner 和 Splitter
类。

你对以Google’s Collections 和 Guava 类库作为工具来减少模板式Java代码有什么想法?

分享这篇文章:

4 Responses to 使用Google Collections, Guava, and Static Imports来简化你的Java代码

  1. simaliu says:

    确实简化了很多。一定要研究一下。

  2. zhangming says:

    google的开源项目给我们带来了编程上巨大的方便确实是非常值得肯定和学习的,但是我们不应该完全放弃JDK的基础类库,只有坚实的基础,才能对所有的挑战无所畏惧

  3. techni says:

    看着都很舒服,急需一套这样的类库来美化代码,初始化一个已知MAP时非常烦一个个的put。

  4. 你这样介绍,看不出到底哪里好,有空研究一下

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据