- 浏览: 991928 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
guava是Java的一个扩展类库,在google的许多项目中使用过了,现在最为一个 开源的Java类库广泛使用(http://code.google.com/p/guava-libraries/)。
guava类库扩展的主要是这些相关类:collections(集合类),concurrency(并发),primitives,reflection(反射),comparison,I/O,hashing,networking(网络),strings(字符串),math(计算),in-memory caching(内存缓存),in-memory publish/subscirbe(内存发布订阅)等。
guava的目标是让我们写更少的代码,并且可以让我们写的代码更简单、清晰、可读性强。
下面我们对guava的使用方法和场景做一些介绍。
guava库需要在大于JDK1.6的版本下使用。
1.预先判断Preconditions
通常我们检查参数,是用如下方法
public void setRating(Double rating){
if(rating == null){
throw new NullPointerException();
}
Double r = rating;
}
如果你使用guava的类库,可以使代码更加简洁
public void setRating(Double rating){
Double r = checkNotNull(rating);
}
不过,记得添加静态引用(import static com.google.common.base.Preconditions.checkNotNull;),在Eclipse中的设置,可以参考(eclipse中添加静态引用)
除了checkNotNull之外,Preconditions还提供了一些其他的方法,如chekArgument,checkState,checkElementIndex,checkPositionIndex等,更多可参考Preconditions API。
2.Object.toStringHelper()
这个方法主要是用于更加简单的实现Object.toString()方法
public String toString() {
return Objects.toStringHelper(this).add("name", name)
.add("id", userId)
.add("pet",petName)
//.omitNullValues()
.toString();
}
omitNullValues()当某个属性有空值的时候,不输出该熟悉。输出内容如下:
TestGuava{name=qiyadeng, id=12}
3.Stopwatch(计时器)
我们经常需要判断某一段语句执行需要多少时间,过去常用的做法是记录运行前的时间,然后用运行完成的时间减去运行前的时间,并且转换成我们可读的秒或是毫秒时间(这个转换过程可并不简单),在guava中的做法是:
Stopwatch stopwatch = new Stopwatch().start();
//do something test
for (int i = 0; i < 10000; i++) {
}
long nanos = stopwatch.elapsed(TimeUnit.NANOSECONDS);
System.out.println(nanos);
4.CharMatcher
字符匹配的方法特别多,举一个例子过滤用户的输出
String userInput = "nihao1234-1";
CharMatcher ID_MATCHER = CharMatcher.DIGIT.or(CharMatcher.is('-'));
System.out.println(ID_MATCHER.retainFrom(userInput));
可以把输入的的字符类型去掉,只输出1234-1。更多的使用方法可以参考CharMatcher。
5.String Joining 字符串连接
可以快速地把一组字符数组连接成为用特殊符合连接的一个字符串,如果这组字符中有null值的话,我们可以使用skipNulls或是useForNull来控制我们要输出的内容。
//Joiner JOINER= Joiner.on(",").skipNulls();
Joiner JOINER= Joiner.on(",").useForNull("null");
String str = JOINER.join("hello","world",null,"qiyadeng");
//hello,world,null,qiyadeng
6.String Splitting字符串分割
有这样一组字符串”hello,,qiyadeng,com,”我们用split(“,”)分割字符串,得到的结果是["hello","","qiyaeng","com"],但是我们如果希望的是把空值去掉,还需要另外处理,使用guava的Splitter可以简单做到。
Iterable<String> splitStr = Splitter.on(',').trimResults().omitEmptyStrings().split("hello,qiyadeng,com");
for (String string : splitStr) {
System.out.println(string);
}
本文链接地址: google guava使用例子/示范(一)
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
Feedback
# re: google guava使用例子/示范(一) 回复 更多评论
2013-12-01 21:59 by ys
感谢分享,很有用!
当前版本发现
Stopwatch stopwatch = new Stopwatch().start();
不推荐使用,用以下方式替代:
Stopwatch stopwatch = Stopwatch.createUnstarted().start();
或:
Stopwatch stopwatch = Stopwatch.createStarted();
guava类库扩展的主要是这些相关类:collections(集合类),concurrency(并发),primitives,reflection(反射),comparison,I/O,hashing,networking(网络),strings(字符串),math(计算),in-memory caching(内存缓存),in-memory publish/subscirbe(内存发布订阅)等。
guava的目标是让我们写更少的代码,并且可以让我们写的代码更简单、清晰、可读性强。
下面我们对guava的使用方法和场景做一些介绍。
guava库需要在大于JDK1.6的版本下使用。
1.预先判断Preconditions
通常我们检查参数,是用如下方法
public void setRating(Double rating){
if(rating == null){
throw new NullPointerException();
}
Double r = rating;
}
如果你使用guava的类库,可以使代码更加简洁
public void setRating(Double rating){
Double r = checkNotNull(rating);
}
不过,记得添加静态引用(import static com.google.common.base.Preconditions.checkNotNull;),在Eclipse中的设置,可以参考(eclipse中添加静态引用)
除了checkNotNull之外,Preconditions还提供了一些其他的方法,如chekArgument,checkState,checkElementIndex,checkPositionIndex等,更多可参考Preconditions API。
2.Object.toStringHelper()
这个方法主要是用于更加简单的实现Object.toString()方法
public String toString() {
return Objects.toStringHelper(this).add("name", name)
.add("id", userId)
.add("pet",petName)
//.omitNullValues()
.toString();
}
omitNullValues()当某个属性有空值的时候,不输出该熟悉。输出内容如下:
TestGuava{name=qiyadeng, id=12}
3.Stopwatch(计时器)
我们经常需要判断某一段语句执行需要多少时间,过去常用的做法是记录运行前的时间,然后用运行完成的时间减去运行前的时间,并且转换成我们可读的秒或是毫秒时间(这个转换过程可并不简单),在guava中的做法是:
Stopwatch stopwatch = new Stopwatch().start();
//do something test
for (int i = 0; i < 10000; i++) {
}
long nanos = stopwatch.elapsed(TimeUnit.NANOSECONDS);
System.out.println(nanos);
4.CharMatcher
字符匹配的方法特别多,举一个例子过滤用户的输出
String userInput = "nihao1234-1";
CharMatcher ID_MATCHER = CharMatcher.DIGIT.or(CharMatcher.is('-'));
System.out.println(ID_MATCHER.retainFrom(userInput));
可以把输入的的字符类型去掉,只输出1234-1。更多的使用方法可以参考CharMatcher。
5.String Joining 字符串连接
可以快速地把一组字符数组连接成为用特殊符合连接的一个字符串,如果这组字符中有null值的话,我们可以使用skipNulls或是useForNull来控制我们要输出的内容。
//Joiner JOINER= Joiner.on(",").skipNulls();
Joiner JOINER= Joiner.on(",").useForNull("null");
String str = JOINER.join("hello","world",null,"qiyadeng");
//hello,world,null,qiyadeng
6.String Splitting字符串分割
有这样一组字符串”hello,,qiyadeng,com,”我们用split(“,”)分割字符串,得到的结果是["hello","","qiyaeng","com"],但是我们如果希望的是把空值去掉,还需要另外处理,使用guava的Splitter可以简单做到。
Iterable<String> splitStr = Splitter.on(',').trimResults().omitEmptyStrings().split("hello,qiyadeng,com");
for (String string : splitStr) {
System.out.println(string);
}
本文链接地址: google guava使用例子/示范(一)
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
Feedback
# re: google guava使用例子/示范(一) 回复 更多评论
2013-12-01 21:59 by ys
感谢分享,很有用!
当前版本发现
Stopwatch stopwatch = new Stopwatch().start();
不推荐使用,用以下方式替代:
Stopwatch stopwatch = Stopwatch.createUnstarted().start();
或:
Stopwatch stopwatch = Stopwatch.createStarted();
发表评论
-
20180222积累
2018-02-22 09:34 4321. mybatis如何通过接口查找对应的mapper. ... -
20180208积累
2018-02-08 10:28 411临时表与永久表相似,但临时表存储在 tempdb 中,当不 ... -
行业应用
2018-01-30 16:30 438git clone的时候用上面那个IP地址,下面栏中的不能 ... -
SQLite 数据库
2018-01-29 22:57 718android: SQLite创建数据 ... -
java里面获取map的key和value的方法
2018-02-01 11:29 2075获取map的key和value的方法分为两种形式: ma ... -
Eclipse中Maven WEB工程tomcat项目添加调试以及项目发布细节记录
2018-02-23 21:11 675一、建立一个maven WEB项目 1、file-&g ... -
错误:HttpServlet was not found on the Java
2018-02-23 21:12 335我们在用Eclipse进行Java web ... -
使用 java8 实现List到Array的转换
2018-02-23 21:13 2868开发中需要调用第三方的库,有些 API 的入参要求是 do ... -
Java8 利用Lambda处理List集合
2018-01-11 09:58 5564Java 8新增的Lambda表达式,我们可以很方便地并行操 ... -
java中string与json互相转化
2018-01-11 09:40 1024在Java中socket传输数据时,数据类型往往比较难选择。 ... -
JSON 数据格式
2018-01-11 09:37 417JSON(JavaScript Object Notatio ... -
java怎么读取json格式的数据
2018-01-11 09:46 1019java可以使用JSONObject和JSONArray来操作 ... -
Java8-如何将List转变为逗号分隔的字符串
2018-01-10 10:13 1919Converting a List to a String ... -
eclipse maven 打war包的两种方式
2018-02-23 21:25 651第一种:利用pom.xml文件打包。 右键pom.xml ... -
Annotation(三)——Spring注解开发
2018-02-28 09:21 381Spring框架的核心功能IoC(Inversion o ... -
Spring自定义注解
2018-02-28 09:32 528java注解:附在代码中的一些元信息,用于在编译、运行时起 ... -
Java项目
2018-01-08 10:56 0这两种解决办法已经能完全解决问题,不过值得注意的一点是,我 ... -
解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
2018-03-22 10:41 1092在Eclipse中建立好一个Maven项目后,如果Java ... -
Java @override报错的解决方法
2018-01-07 12:56 0有时候Java的Eclipse工程换一台电脑后编译总是@ove ... -
Java 8 配置Maven-javadoc-plugin
2018-01-07 09:07 979在升级JDK至1.8之后,使用Maven-javadoc- ...
相关推荐
使用google guava 实现定时缓存功能
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
Google Guava 官方教程 - 详情:https://blog.csdn.net/Dream_Weave/article/details/86252213
google guava框架,包括Getting Started with Google Guava、google cache、base、io等介绍
Getting Started with Google Guava, guava的技术参考文档
Google Guava 官方教程 - v1.1
Google Guava 官方教程 v1.1 2018-07-22 https://github.com/tianbian224/GuavaLearning/blob/master/Google%20Guava%20%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B%20-%20v1.1.pdf
Getting Started with Google Guava.pdf -Bill Bejeck
Getting Started with Google Guava code
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Google Guava 官方教程,电子书,epub格式,可用在手机端阅读
谷歌guava的jar包和源码,很值得收藏。直接通过exlipse的build path,导入jar包和源码,可供开发和学习
此文档为Guava中最流行和最强大的功能,提供更具可读性和解释性的说明
Google Guava 官方教程
19的guava包 希望对大家有帮助
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...
Guava作为Java编程的助手,可以提升开发效率,对Guava设计思想的学习则极大的有益于今后的编程之路。
Google Guava 30.1.1常用类介绍及实践代码
标签:google、guava、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。