首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
Guava 实用操作集合
时间:
2016-04-26 20:48:01
阅读:
253
评论:
0
收藏:
0
[点我收藏+]
标签:
guava
是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。
大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉到很痛苦,因为我们一而再,再而三的重复发明轮子。为了不再忍受痛苦,也许我们可以总结自己的类库,但是新的问题来了。自己总结的类库很难与大家分享,不能帮助到更多人。同时自己的类库要不断的进行维护。guava 正是出于这样的目的而来的。
只说不练不行啊,让我们举上一两个例子
判断 String不为null,且不为空
Java代码
String str=...;
//use java
if
(str !=
null
&& !str.isEmpty()){
//do something
}
//use guava
if
(!Strings.isNullOrEmpty(str)){
//do something
}
上而的例子还不是很给力,让我们举一个更给力的例子。
复制文件
Java代码
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
Java代码
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
Java代码
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
Java代码
public
class
JoinerTest {
@Test
public
void
test() {
Assert.assertEquals(
"2011-08-04"
, Joiner.on(
"-"
).join(
"2011"
,
"08"
,
"04"
));
}
}
Splitter
Java代码
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
Java代码
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
有些方法在执行前,先要检查传入的参数是否正确,或者类的状态是否正确。通常会这样做
Java代码
if
(count <=
0
) {
throw
new
IllegalArgumentException(
"must be positive: "
+ count);
}
guava就可以这样,达到相同的效果
Java代码
Preconditions.checkArgument(count >
0
,
"must be positive: %s"
, count);
I/O
包
ByteStreams
提供了针对字节流的工具方法
Java代码
InputStream from=...;
OutputStream to=...;
ByteStreams.copy(from,to);
//复制
CharStreams
提供了针对字符流的工具方法
Java代码
Reader from =...;
Writer to =...;
CharStreams.copy(from, to);
//复制
Files
提供了针对文件的工具方法
Java代码
File from=...;
File to=...;
Files.copy(from, to);
//复制
Java代码
Files.deleteDirectoryContents(File directory);
//删除文件夹下的内容(包括文件与子文件夹)
Files.deleteRecursively(File file);
//删除文件或者文件夹
Files.move(File from, File to);
//移动文件
Resources
提供了针对classpath下资源操作的工具方法
Java代码
URL url = Resources.getResource(
"config.xml"
);
//获取classpath根下的config.xml文件url
Guava 实用操作集合
标签:
原文地址:http://blog.csdn.net/gui66497/article/details/51240574
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!