使用Google Collections, Guava, and Static Imports来简化你的Java代码
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
类。
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
类。