Guava 实用操作集合

guava 是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。 
   
   大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉到很痛苦,因为我们一而再,再而三的重复发明轮子。为了不再忍受痛苦,也许我们可以总结自己的类库,但是新的问题来了。自己总结的类库很难与大家分享,不能帮助到更多人。同时自己的类库要不断的进行维护。guava 正是出于这样的目的而来的。 

   只说不练不行啊,让我们举上一两个例子 
判断 String不为null,且不为空  
Java代码  收藏代码
  1. String str=...;  
  2. //use java  
  3. if(str !=null && !str.isEmpty()){  
  4.     //do something  
  5. }  
  6.   
  7.   
  8. //use guava  
  9. if(!Strings.isNullOrEmpty(str)){  
  10.     //do something  
  11. }  

上而的例子还不是很给力,让我们举一个更给力的例子。 复制文件  
Java代码  收藏代码
  1. File from=...;  
  2. File to=...;  
  3.   
  4. //use java  
  5. FileInputStream in=new FileInputStream(from);  
  6. FileOutputStream out=new FileOutputStream(to);  
  7. byte[] buff=new byte[1024];  
  8. int readLength=-1;  
  9. while((readLength = in.read(buff)) > 0){  
  10.     out.write(buff, 0, readLength);  
  11. }  
  12. in.close();  
  13. out.close();  
  14.   
  15. //use guava  
  16. Files.copy(from,to); //注意,只用了一行代码噢  


    通过上面的例子,已经能感觉到guava的强大。接下来,让我们更深入看看guava的其他功能。 guava(r09-api) 分为这几个包 
  • base              基本的工具类与接口
  • io                 io流相关的工具类与方法
  • net               网络地址相关的工具类与方法
  • primitives        原始类型的工具类
  • collect           通用集合接口与实现,与其集合相关工具类
  • util.concurrent 并发相关工具类


base包  

字符串相关工具类  
Strings  
Java代码  收藏代码
  1. public class StringsTest {  
  2.     @Test  
  3.     public void test() {  
  4.         //将空字符串转换为null  
  5.         Assert.assertEquals(null, Strings.emptyToNull(""));  
  6.         //将null转换为空字符串  
  7.         Assert.assertEquals("", Strings.nullToEmpty(null));  
  8.         //判断字符串为null或者为空  
  9.         Assert.assertTrue(Strings.isNullOrEmpty("") && Strings.isNullOrEmpty(null));  
  10.         //将字符串重复  
  11.         Assert.assertEquals("javajavajava", Strings.repeat("java"3));  
  12.     }  
  13. }  


CharMatcher  
Java代码  收藏代码
  1. public class CharMatcherTest {  
  2.     @Test  
  3.     public void test() {  
  4.         String source = "a1b2c3";  
  5.         CharMatcher matcher = CharMatcher.DIGIT; //预定义的 DIGIT 类型  
  6.         Assert.assertTrue(mathcer.match('8'));  
  7.         Assert.assertEquals("123", matcher.retainFrom(source));  
  8.         Assert.assertEquals(3, matcher.countIn(source));  
  9.         Assert.assertEquals("abc", matcher.removeFrom(source));  
  10.         Assert.assertEquals("a2b3c", matcher.trimFrom("1a2b3c4"));  
  11.     }  
  12. }  

Jioner  
Java代码  收藏代码
  1. public class JoinerTest {  
  2.     @Test  
  3.     public void test() {  
  4.         Assert.assertEquals("2011-08-04", Joiner.on("-").join("2011""08""04"));  
  5.     }  
  6. }  


Splitter  
Java代码  收藏代码
  1. public class SplitterTest {  
  2.     @Test  
  3.     public void test() {  
  4.         Splitter.on(',').split("a,b"); //结果返回Iterable<String>,包含 "a" and "b"  
  5.         //将结果中的元素trim  
  6.         //结果依然包含  "a" 和 "b" ,而不是 "a " 和 " b"  
  7.         Splitter.on(',').trimResults().split("a , b");   
  8.         //忽略空字符串  
  9.         //结果必须是"a" 和 "b",而不是 "a" ,"" 和 "b"  
  10.         Splitter.on(',').omitEmptyStrings().split("a,,b");   
  11.     }  
  12. }  


CaseFormat  
Java代码  收藏代码
  1. public class CaseFormatTest {  
  2.   
  3.     @Test  
  4.     public void test() throws IOException {  
  5.         // helloGuava => HELLO_GUAVA  
  6.         Assert.assertEquals("HELLO_GUAVA", CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "helloGuava"));  
  7.         // hello-guava => HelloGuava  
  8.         Assert.assertEquals("HelloGuava", CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, "hello-guava"));  
  9.     }  
  10. }  


其他  
Preconditions  
有些方法在执行前,先要检查传入的参数是否正确,或者类的状态是否正确。通常会这样做
Java代码  收藏代码
  1. if (count <= 0) {  
  2.        throw new IllegalArgumentException("must be positive: " + count);  
  3. }  

guava就可以这样,达到相同的效果 
Java代码  收藏代码
  1. Preconditions.checkArgument(count > 0"must be positive: %s", count);  


I/O包  
ByteStreams 提供了针对字节流的工具方法 
Java代码  收藏代码
  1. InputStream from=...;  
  2. OutputStream to=...;  
  3. ByteStreams.copy(from,to); //复制  


CharStreams 提供了针对字符流的工具方法 
Java代码  收藏代码
  1. Reader from =...;  
  2. Writer to =...;  
  3. CharStreams.copy(from, to); //复制  


Files 提供了针对文件的工具方法 
Java代码  收藏代码
  1. File from=...;  
  2. File to=...;  
  3. Files.copy(from, to); //复制  

Java代码  收藏代码
  1. Files.deleteDirectoryContents(File directory); //删除文件夹下的内容(包括文件与子文件夹)  
  2. Files.deleteRecursively(File file); //删除文件或者文件夹  
  3. Files.move(File from, File to); //移动文件  


Resources 提供了针对classpath下资源操作的工具方法 
Java代码  收藏代码
  1. URL url = Resources.getResource("config.xml"); //获取classpath根下的config.xml文件url  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QQ浏览器如何启用无痕模式

我们在日常浏览网页的时候总会留下浏览记录&#xff0c;同时会产生网页缓存&#xff0c;而别有用心之人就可以通过这些信息窥探到我们的隐私甚至威胁到我们的财产安全&#xff0c;而QQ浏览器为了防止产生浏览记录和网页缓存特地制作了无痕模式&#xff0c;那如何使用无痕模式呢…

Intellj Idea 如何设置类头注释和方法注释

intellj idea 如何设置类头注释和方法注释intellj idea的强大之处就不多说了&#xff0c;相信每个用过它的人都会体会到&#xff0c;但是我们也会被他的复杂搞的晕头转向&#xff0c;尤其刚从eclipse转过来的童鞋&#xff0c;相信刚开始的那段经历都是不堪回首的&#xff0c;我…

傲游浏览器语言怎么切换 傲游浏览器语言切换方法简述

作为一款多功能、个性化、多标签的浏览器产品&#xff0c;傲游浏览器不仅能够有效减少浏览器对系统资源的占用率&#xff0c;还内置了大量的贴心功能&#xff0c;其中便包括浏览器语言切换。那么&#xff0c;傲游浏览器语言要怎么切换呢?不清楚具体步骤的朋友&#xff0c;还不…

Logback介绍及入门

Logback简介 Logback是由log4j创始人设计的又一个开源日志组件。 logback当前分成三个模块&#xff1a;logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API…

怎么开启搜狗高速浏览器的手动升级

搜狗高速浏览器是一款很好用的浏览器软件&#xff0c;随着软件的完善&#xff0c;我们也要对软件进行升级&#xff0c;才能享受更多更优质的功能&#xff0c;我们可以用手动升级来代替提示升级和自动升级所带来的不便&#xff0c;那么&#xff0c;怎么操作呢?下面就由小编来教…

Spring事务配置实例

事务 一个使用 MyBatis-spring 的主要原因是它允许MyBatis 参与到 Spring 的事务管理中。而 不是给 MyBatis 创建一个新的特定的事务管理器,MyBatis-Spring 利用了存在于Spring 中的 DataSourceTransactionManager。 一旦 Spring 的PlatformTransactionManager 配置好了,你可以…

pptv如何绑定邮箱账号

随着社会发展的不断进步&#xff0c;我们要记忆的东西太多了&#xff0c;今天记一个qq账号和密码&#xff0c;明天又记忆一个邮箱账号和密码&#xff0c;可能后天还要记忆一个淘宝账号和密码…&#xff0c;太多的账号和密码&#xff0c;如果设置相同又会被别人盗取&#xff0c;…

Java锁之可重入锁介绍

锁作为并发共享数据&#xff0c;保证一致性的工具&#xff0c;在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利&#xff0c;但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性&…

win7系统蓝屏修复工具如何使用

有网友反映自己在使用win7电脑的时候&#xff0c;电脑突发蓝屏情况&#xff0c;不知道是什么原因造成的。这个时候我们可以借助win7蓝屏修复工具查看分析win7蓝屏原因进行对症解决。那么win7蓝屏修复工具怎么使用?下面小编就教下大家win7蓝屏修复工具使用方法。 win7系统蓝屏…

怎样找到win7系统默认的微信缓存文件夹路径

好多小伙伴使用win7系统的电脑版微信的时候会收到很多文件资料&#xff0c;平时可以进入微信直接获取文件&#xff0c;那么当我们碰到断网的情况下如何准确找到这些文件呢?并且如果想对文件默认保存位置做出修改又该如何解决呢?小伙伴不要急&#xff0c;现证小编就教大家怎样…

Spring AOP事务管理(使用切面把事务管理起来)

在《Spring Transaction 分析事务属性&#xff08;事务的基本概念、配置&#xff09;》基础上 1、使用基于注解的AOP事务管理 <tx:annotation-driven transaction-manager"transactionManager"/> <aop:aspectj-autoproxy /> 探索tx:annotation-…

win7电脑浏览器证书过期的解决方法

最近有很多小伙伴反应win7系统打开电脑浏览器时会出现证书过期或者错误的问题&#xff0c;由于很多小伙伴用的不是微软官方正版授权的系统&#xff0c;所以出现这种情况时无可避免的&#xff0c;这个时候小伙伴们可以仔细校对下电脑系统的日期和时间是否正常&#xff0c;因为有…

数据库事务隔离级别

数据库事务的隔离级别有4个&#xff0c;由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable&#xff0c;这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。 √: 可能出现 : 不会出现 脏读不可重复读幻读Read uncommitted√√√Read c…

爱奇艺视频有哪些插件?爱奇艺插件怎么卸载

是不是觉得爱奇艺视频占空间大&#xff0c;但是又不想卸载?是不是觉得爱奇艺有很多插件&#xff0c;那么怎么卸载爱奇艺插件呢?流星告诉你&#xff1a; 1、首先打开手机爱奇艺视频&#xff0c;然后在通知栏下方找到【我的】按钮&#xff0c;如图所示&#xff1a; 爱奇艺201…

腾讯视频如何设置定时关机

腾讯视频如何设置定时关机?下面详细介绍操作步骤&#xff1a; 腾讯视频app官方下载_腾讯视频如何设置定时关机 1、打开电脑&#xff0c;进入腾讯视频主屏幕&#xff0c;点击右边的菜单图标。 腾讯视频app官方下载_腾讯视频如何设置定时关机 2、点击下拉菜单的设置。 腾讯…

dataTable删除行

思路大概就是&#xff1a;通过data()循环匹配&#xff0c;返回当前index&#xff0c;然后通过row(index).remove()删除 var removeIndex;//待删除行index var table $("#tb").DataTable(); var datas table.data(); $.each(datas,function(i,d) {if (d[0] data.id) …

centos6.5配置Hadoop环境,运行wordcount例子

安装vmware12&#xff0c;centos6.5&#xff08;还是6.5好&#xff0c;稳定流畅&#xff0c;7界面好看但是虚拟机里面卡死了&#xff09;&#xff0c;删除自带openjdk下载安装jdk1.7配置环境变量 vim /etc/profile->最后加上下面这段 export JAVA_HOME/usr/java/jdk1.7.0_79…

Maven打包自动发布到nexus私服

通过命令 -f指定的pom文件 deploy打包发布 Intellij Idea中可以通过Run-EditConfigurations-""号-Maven新建一个自定义maven脚本&#xff0c;将刚才的发布命令填入Command line中保存即可 先设置pom文件里的build信息&#xff0c;可以是maven-compiler-plugin插件 ma…

搜狗浏览器热搜怎么关 热搜关闭方法详解

要说“搜狗浏览器”中最让人不满的地方&#xff0c;相信不少网友都会投该浏览器页面最下面的“搜狗搜索热搜”一票&#xff0c;毕竟其中经常出现一些用户曾经搜索过的或相关的词语!那么&#xff0c;搜狗浏览器中的热搜该怎么关闭呢?让我们通过下文一起来了解一下。 方法步骤 …

分布式服务框架Dubbo使用小结

介绍&#xff1a; Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA 服务治理方案&#xff0c;每天为2,000个服务提供3,000,000,000次访问量支持&#xff0c;并被广泛应用于阿里巴巴…