写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/251439.html