guava是
google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。
大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉到很痛苦,因为我们一而再,再而三的重复发明轮子。为了不再忍受痛苦,也许我们可以总结自己的类库,但是新的问题来了。自己总结的类库很难与大家分享,不能帮助到更多人。同时自己的类库要不断的进行维护。guava 正是出于这样的目的而来的。
只说不练不行啊,让我们举上一两个例子
判断 String不为null,且不为空
-
String str=...;
-
-
if(str !=null && !str.isEmpty()){
-
-
}
-
-
-
-
if(!Strings.isNullOrEmpty(str)){
-
-
}
上而的例子还不是很给力,让我们举一个更给力的例子。复制文件
-
File from=...;
-
File to=...;
-
-
-
FileInputStream in=new FileInputStream(from);
-
FileOutputStream out=new FileOutputStream(to);
-
byte[] buff=new byte[1024];
-
int readLength=-1;
-
while((readLength = in.read(buff)) > 0){
-
out.write(buff, 0, readLength);
-
}
-
in.close();
-
out.close();
-
-
-
Files.copy(from,to);
通过上面的例子,已经能感觉到guava的强大。接下来,让我们更深入看看guava的其他功能。guava(r09-api)分为这几个包
- base 基本的工具类与接口
- io io流相关的工具类与方法
- net 网络地址相关的工具类与方法
- primitives 原始类型的工具类
- collect 通用集合接口与实现,与其集合相关工具类
- util.concurrent 并发相关工具类
base包
字符串相关工具类
Strings
-
public class StringsTest {
-
@Test
-
public void test() {
-
-
Assert.assertEquals(null, Strings.emptyToNull(""));
-
-
Assert.assertEquals("", Strings.nullToEmpty(null));
-
-
Assert.assertTrue(Strings.isNullOrEmpty("") && Strings.isNullOrEmpty(null));
-
-
Assert.assertEquals("javajavajava", Strings.repeat("java", 3));
-
}
-
}
CharMatcher
-
public class CharMatcherTest {
-
@Test
-
public void test() {
-
String source = "a1b2c3";
-
CharMatcher matcher = CharMatcher.DIGIT;
-
Assert.assertTrue(mathcer.match(‘8‘));
-
Assert.assertEquals("123", matcher.retainFrom(source));
-
Assert.assertEquals(3, matcher.countIn(source));
-
Assert.assertEquals("abc", matcher.removeFrom(source));
-
Assert.assertEquals("a2b3c", matcher.trimFrom("1a2b3c4"));
-
}
-
}
Jioner
-
public class JoinerTest {
-
@Test
-
public void test() {
-
Assert.assertEquals("2011-08-04", Joiner.on("-").join("2011", "08", "04"));
-
}
-
}
Splitter
-
public class SplitterTest {
-
@Test
-
public void test() {
-
Splitter.on(‘,‘).split("a,b");
-
-
-
Splitter.on(‘,‘).trimResults().split("a , b");
-
-
-
Splitter.on(‘,‘).omitEmptyStrings().split("a,,b");
-
}
-
}
CaseFormat
-
public class CaseFormatTest {
-
-
@Test
-
public void test() throws IOException {
-
-
Assert.assertEquals("HELLO_GUAVA", CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "helloGuava"));
-
-
Assert.assertEquals("HelloGuava", CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, "hello-guava"));
-
}
-
}
其他
Preconditions
有些方法在执行前,先要检查传入的参数是否正确,或者类的状态是否正确。通常会这样做
-
if (count <= 0) {
-
throw new IllegalArgumentException("must be positive: " + count);
-
}
guava就可以这样,达到相同的效果
-
Preconditions.checkArgument(count > 0, "must be positive: %s", count);
I/O包
ByteStreams提供了针对字节流的工具方法
-
InputStream from=...;
-
OutputStream to=...;
-
ByteStreams.copy(from,to);
CharStreams提供了针对字符流的工具方法
-
Reader from =...;
-
Writer to =...;
-
CharStreams.copy(from, to);
Files提供了针对文件的工具方法
-
File from=...;
-
File to=...;
-
Files.copy(from, to);
-
Files.deleteDirectoryContents(File directory);
-
Files.deleteRecursively(File file);
-
Files.move(File from, File to);
Resources提供了针对classpath下资源操作的工具方法
-
URL url = Resources.getResource("config.xml");
Guava 实用操作集合
原文:http://blog.csdn.net/gui66497/article/details/51240574