- 浏览: 2831725 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
guava是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。
大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉到很痛苦,因为我们一而再,再而三的重复发明轮子。为了不再忍受痛苦,也许我们可以总结自己的类库,但是新的问题来了。自己总结的类库很难与大家分享,不能帮助到更多人。同时自己的类库要不断的进行维护。guava 正是出于这样的目的而来的。
只说不练不行啊,让我们举上一两个例子
判断 String不为null,且不为空
- String str=...;
- //use java
- if(str !=null && !str.isEmpty()){
- //do something
- }
- //use guava
- if(!Strings.isNullOrEmpty(str)){
- //do something
- }
上而的例子还不是很给力,让我们举一个更给力的例子。复制文件
- File from=...;
- File to=...;
- //use java
- FileInputStream in=new FileInputStream(from);
- FileOutputStream out=new FileOutputStream(to);
- byte[] buff=new byte[1024];
- int readLength=-1;
- while((readLength = in.read(buff)) > 0){
- out.write(buff, 0, readLength);
- }
- in.close();
- out.close();
- //use guava
- Files.copy(from,to); //注意,只用了一行代码噢
通过上面的例子,已经能感觉到guava的强大。接下来,让我们更深入看看guava的其他功能。guava(r09-api)分为这几个包
- base 基本的工具类与接口
- io io流相关的工具类与方法
- net 网络地址相关的工具类与方法
- primitives 原始类型的工具类
- collect 通用集合接口与实现,与其集合相关工具类
- util.concurrent 并发相关工具类
base包
字符串相关工具类
Strings
- public class StringsTest {
- @Test
- public void test() {
- //将空字符串转换为null
- Assert.assertEquals(null, Strings.emptyToNull(""));
- //将null转换为空字符串
- Assert.assertEquals("", Strings.nullToEmpty(null));
- //判断字符串为null或者为空
- Assert.assertTrue(Strings.isNullOrEmpty("") && Strings.isNullOrEmpty(null));
- //将字符串重复
- Assert.assertEquals("javajavajava", Strings.repeat("java", 3));
- }
- }
CharMatcher
- public class CharMatcherTest {
- @Test
- public void test() {
- String source = "a1b2c3";
- CharMatcher matcher = CharMatcher.DIGIT; //预定义的 DIGIT 类型
- Assert.assertTrue(mathcer.match('8'));
- Assert.assertEquals("123", matcher.retainFrom(source));
- Assert.assertEquals(3, matcher.countIn(source));
- Assert.assertEquals("abc", matcher.removeFrom(source));
- Assert.assertEquals("a2b3c", matcher.trimFrom("1a2b3c4"));
- }
- }
Jioner
- public class JoinerTest {
- @Test
- public void test() {
- Assert.assertEquals("2011-08-04", Joiner.on("-").join("2011", "08", "04"));
- }
- }
Splitter
- public class SplitterTest {
- @Test
- public void test() {
- Splitter.on(',').split("a,b"); //结果返回Iterable<String>,包含 "a" and "b"
- //将结果中的元素trim
- //结果依然包含 "a" 和 "b" ,而不是 "a " 和 " b"
- Splitter.on(',').trimResults().split("a , b");
- //忽略空字符串
- //结果必须是"a" 和 "b",而不是 "a" ,"" 和 "b"
- Splitter.on(',').omitEmptyStrings().split("a,,b");
- }
- }
CaseFormat
- public class CaseFormatTest {
- @Test
- public void test() throws IOException {
- // helloGuava => HELLO_GUAVA
- Assert.assertEquals("HELLO_GUAVA", CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "helloGuava"));
- // hello-guava => HelloGuava
- Assert.assertEquals("HelloGuava", CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, "hello-guava"));
- }
- }
其他
Preconditions
有些方法在执行前,先要检查传入的参数是否正确,或者类的状态是否正确。通常会这样做
guava就可以这样,达到相同的效果
I/O包
ByteStreams提供了针对字节流的工具方法
CharStreams提供了针对字符流的工具方法
Files提供了针对文件的工具方法
- Files.deleteDirectoryContents(File directory); //删除文件夹下的内容(包括文件与子文件夹)
- Files.deleteRecursively(File file); //删除文件或者文件夹
- Files.move(File from, File to); //移动文件
Resources提供了针对classpath下资源操作的工具方法
评论
1 楼
sunxboy
2014-07-15
use:
Iterables.toArray(Iterable, Class)
instead of
Lists.newArrayList(splitter.split()).toArray(new String[0]);
Iterables.toArray(Iterable, Class)
instead of
Lists.newArrayList(splitter.split()).toArray(new String[0]);
发表评论
-
高级Java程序员值得拥有的10本书
2015-05-04 07:24 766Java是时下最流行的编程语言之一。市面上也出现了适合初学者 ... -
深入理解java异常处理机制
2015-01-30 09:30 12831. 引子 try…catch…fi ... -
java 运行时参数设置
2015-01-07 09:13 825JVM的运行时参数: -Xms为执行单元内存的1/4, ... -
每个Java开发者都应该知道的5个JDK工具
2014-12-29 12:37 1106JDK是Java语言的软件开 ... -
使用双重锁判定可以大幅降低锁的征用
2014-12-29 12:30 710class ObjInstance { //单例 pri ... -
MAVEN Scope使用说明
2014-11-24 09:40 718在Maven的依赖管理中,经常会用到依赖的scope设置。这 ... -
Spring4 quartz job xml configuration
2014-11-11 09:46 14061. 定义job details public ... -
Add items into list in one line using guava
2014-11-10 10:54 696//@formatter:off fina ... -
配置动态读取(变化)文件 in Spring
2014-11-10 08:51 12951. 从环境变量中读取路径: <bean id=&q ... -
JAVA实现AES加密与解密
2014-11-04 15:34 617package com.eifesun.monitor.up ... -
Netty4.x分析
2014-07-31 11:06 1422官网定义: netty是一个异步、事件驱动的网络应用框架,用 ... -
Ways to sort lists of objects in Java based on multiple fields
2014-07-21 17:19 7361. the first way: Sorting wit ... -
how to parse a String to BigDecimal
2014-07-21 10:08 890private BigDecimal parsePrice( ... -
order list using google guava
2014-07-21 09:08 855Predicate<String> filter ... -
Java 读文件操作
2014-07-08 14:09 8581. only use java core, no exte ... -
怎样使Java 中测试按一定顺序执行
2014-03-10 11:27 1270@FixMethodOrder(MethodSorters. ... -
如何实现在当类初始化时,自动调动某个方法
2014-02-14 14:44 925有两种思路, 1. 将这个类实现为thread类 (or ... -
持续集成JenkinsAPI常见用法
2014-02-10 13:54 43jenkins(持续集成开源工具)提供了丰富的api接口,基 ... -
Sonar 安装与使用
2014-01-13 10:49 1697Sonar 是一个用于代码质量管理的开放平台。通过插件机制, ... -
源代码管理分析工具 Source Navigator的安装与使用
2014-01-13 09:51 1844Source-Navigator是原来redhat开发的一个 ...
相关推荐
包含10.0.1、11.0.2、16.0.1、18.0、19.0、20.0、25.1多个版本。 Guava是一种基于开源的Java库,其中包含谷歌正在由他们...这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。
因工作的需要,利用Guave对集合进行分组。这是个最简单的例子,希望对大家有用。
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
http://www.cnblogs.com/snidget/archive/2013/02/05/2893344.html http://macrochen.iteye.com/blog/737058 http://code.google.com/p/guava-libraries/
guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
guava
Stream API常用操作,初步理解stream操作方法,对java8有初步认知。
guava-23.0.zip guava.jar guava
赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...
赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...
Guava使用实例,包含文件操作,字符串操作,基本类型操作,集合操作,断言操作
赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; 包含翻译后的API文档:guava-18.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...
谷歌开发的集合操作包guava14.0.1版本帮助文档,包含集合的高级操作,使集合操作更加快速,简便
集合(collections) 缓存(caching) 原生的类型支持(primitives support) 并发类库(concurrency libraries) 通用注解(common annotations) 字符串处理(string processing) 输入/输出(I/O),等等
Google Guava 对java集合等一些列的封装,使之使用更加简单方便
Guava是Google公司开发的一款适用于Java的工具类集合。
Immutable(不可变)集合 是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。