目录
Guava简介
Guava是一个Google的基于java1.6的类库集合的扩展项目包括collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O,等等
这些高质量的API可以使你的java代码更加优雅,更加简洁
如何使用guava
使用guava非常简单,只需在maven中写入依赖就可以:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
使用guava的collections
如果使用的是java1.5之前的版本,怎么new一个list呢?一定是这样
List<String> list = new ArrayList<String>();
如果要new一个map呢?
Map<String, Integer> map = new HashMap<String, Integer>();
虽然只是new一个简单的对象,但是<>里的内容显得繁琐麻烦
guava可以让我们优雅的new一个集合:
List<String> list = Lists.newArrayList();
Map<String, Integer> map = Maps.newHashMap();
当然guava提供的集合操作不仅如此,当我们往list里添加元素的时候通常如下操作:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
但是如果我们使用了guava,则可以优雅而快速的实现:
List<Integer> list = Lists.newArrayList(1, 2, 3);
使用guava的io
Java的io类是一个让程序员头疼的事情,简单的复制文件可能需要很多行代码,guava提供了简洁优雅的实现方法:
File f1 = new File("d:\\fout.txt");
File f2 = new File("d:\\fout2.txt");
Files.copy(f1, f2);
简单三行便完成了文件的复制。
文件的移动/重命名:
File f1 = new File("d:\\fout.txt");
File f2 = new File("d:\\fout2.txt");
Files.move(f1, f2);
从文件中读取字符串
File f1 = new File("d:\\fout.txt");
List<String> readLines = Files.readLines(f1, Charsets.UTF_8);
将字符串读入到文件
String str2 = "okokokok";
Files.append(str2, f1, Charsets.UTF_8);
使用guava的Preconditions
对传入的参数做非空对象处理是一个简单但是又常见的操作,不使用guava的情况下,我们可能会这样做:
public void testGuava2(Person person) {
if (null == person) {
logger.error("person is null");
}
if (null == person.getEmail()) {
logger.error("email is null");
}
//...
}
这些判断语句影响了方法主要逻辑,影响了程序的可读性
使用了guava后,我们可以更优雅的对空对象做判断:
public void testGuava(Person person) {
try {
checkNotNull(person, "person is null");
String email = person.getEmail();
checkNotNull(email, "email is null");
//
} catch (NullPointerException e) {
System.out.println("person can not be null " + e.getMessage());
}
}
强烈建议将Preconditions静态导入到项目中,在静态导入后,Guava方法非常清楚明晰。checkNotNull清楚地描述做了什么,会抛出什么异常:
import static com.google.common.base.Preconditions.*;
此外在Preconditions中还提供了以下常用的方法:
checkState();
checkArgument(); 等
Guava还有很多简洁而优雅的特性尚未介绍,在代码中使用guava会使得您的开发工作高效而美好