Google Guava库用法大全

写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库用法大全

: » Google Guava库用法大全

原创文章,作者:jamestackk,如若转载,请注明出处:https://blog.ytso.com/251439.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论