写java代码写多了,你就会发现java代码或语法有很多可以改进的地方,包括一些语法上的重复定义等。重复的发明轮子,就会让大家感到厌烦。为了不再忍受痛苦,我们可以总结自己的类库,随着时间的推移我们需要不断的对类库进行升级维护。这对于大多数人来说,是灾难性的。这是Google公司站出来了,guava正是出于这样的目的而来解放我们的痛苦的。
Guava是一个开源的Java库,其中的核心库都是由谷歌提供的。Guava库提供了用于集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等方法。
Guava的好处
标准化 – Guava库是由谷歌托管。
高效 – 可靠,快速和有效的扩展JAVA标准库
优化 -Guava库经过高度的优化。
函数式编程 -增加JAVA功能和处理能力。
实用程序 – 提供了经常需要在应用程序开发的许多实用程序类。
验证 -提供标准的故障安全验证机制。
最佳实践 – 强调最佳的做法。
下面举例说说Guava的实际用法:
针对可变集合的声明
Map<String, Map<Long, List<String>>> java = new HashMap<String, Map<Long,List<String>>>(); Map<String, Map<Long, List<String>>> guava = Maps.newHashMap();
针对不可变集合
List<String> list = new ArrayList<String>();
list.add("java");
list.add("b");
list.add("c");
list.add("d");
ImmutableList<String> of = ImmutableList.of("guava", "b", "c", "d");
ImmutableMap<String,String> map = ImmutableMap.of("xttblog", "", "key2", "value2");
ImmutableList.copyOf
public java(Address from, Address to, List<Step> steps) {
this.from = from;
this.to = to;
this.steps = Collections.unmodifiableList(new ArrayList<Step>(steps));
}
public guava(Address from, Address to, List<Step> steps) {
this.from = from;
this.to = to;
this.steps = ImmutableList.of(steps);
}
Iterables.concat()
public boolean java() {
List<Xttblog> list = new ArrayList<Xttblog>();
list.addAll(getList0());
list.addAll(getList1());
for (Xttblog item : list) {
if (item.text() == "") {
return true;
}
}
return false;
}
public boolean guava() {
for (Xttblog item : Iterables.concat(getList0(), getList1())) {
if (item.text() == "") {
return true;
}
}
return false;
}
字符串比较
if(str !=null && !str.isEmpty()){
//java
}
if(!Strings.isNullOrEmpty(str)){
//guava
}
Jioner
String join="-",java= "2016"+join+"04"+join+"23";
String guava = Joiner.on(join).join("2016", "04", "23");
Splitter
//java
String str="java,guava,";
String [] java=str.split(",");
//Guava
Splitter.on(",").split("java,guava,"); //结果返回Iterable<String>
//将结果中的元素trim
Splitter.on(",").trimResults().split("java , guava,业余 草");
//忽略空字符串
Splitter.on(",").omitEmptyStrings().split("java,guava,,");
Preconditions
if (count <= 0) {//java
throw new IllegalArgumentException("must be positive: " + count);
}
//guava
Preconditions.checkArgument(count > 0, "must be positive: %s", count);
I/O操作
InputStream from; OutputStream to; //... ByteStreams.copy(from,to); Reader from; Writer to; //... CharStreams.copy(from, to); File from; File to; //... Files.copy(from, to); //删除文件夹下的内容(包括文件与子文件夹) Files.deleteDirectoryContents(File directory); //删除文件或者文件夹 Files.deleteRecursively(File file); //移动文件 Files.move(File from, File to);
版权声明:本文为博主原创文章,未经博主允许不得转载。原文地址:http://www.xttblog.com/?p=457

: » Google Guava库用法大全
原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/tech/java/251439.html