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

原文: [url]http://www.aqee.net/2009/10/24/simplifying-java-code-with-google-collections-guava-and-static-imports/[/url]

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 里提供的这些静态方法类似,我们还可以使用 Lists和Sets …

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代码有什么想法?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值