1 概述
工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。
guava的优点:
- 高效设计良好的API,被Google的开发者设计,实现和使用
- 遵循高效的java语法实践
- 使代码更刻度,简洁,简单
- 节约时间,资源,提高生产力
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:
- 集合 [collections]
- 缓存 [caching]
- 原生类型支持 [primitives support]
- 并发库 [concurrency libraries]
- 通用注解 [common annotations]
- 字符串处理 [string processing]
- I/O 等等。
2 Joiner
<1> 将List中的元素按照自定义分隔符拼接成字符串
@Test
public void testJoinOn() {
String result = Joiner.on(",").join(lists);
logger.info(result);
assertThat(result, equalTo("A,B,C,D"));
}
<2> 将List中的带有null值的元素按照自定义的分隔符分割成字符串,但是排除null值
@Test
public void testJoinOnJoinWithNullValueButSkip(){
String result=Joiner.on("#").skipNulls().join(stringListWithNullValue);
assertThat(result,equalTo("Google#Guava#Java#Scala"));
}
<3> 将List中的带有null值的元素按照自定义的分隔符分割成字符串,但是将null值换成自定义的值
@Test
public void testJoinOnWithNullValueButUseDefaultValue() {
String result = Joiner.on(",").useForNull("JAVA").join(listsWithNull);
logger.info(result);
assertThat(result, equalTo("A,B,C,JAVA"));
}
<4> 将List中的带有null值的元素按照自定义的分隔符分割成字符串,但是将null值换成自定义的值,并append到StringBuilder里
@Test
public void testJoinOnAppendToStringBuilder() {
StringBuilder result = Joiner.on(",").useForNull("JAVA").appendTo(new StringBuilder(), listsWithNull);
logger.info(result.toString());
assertThat(result.toString(), equalTo("A,B,C,JAVA"));
}
<5> 将Map中的key-value按照不同的分隔符分割成字符串
@Test
public void testJoinOnWithMap() {
String result = Joiner.on("#").withKeyValueSeparator("=").join(stringMap);
logger.info(result);
assertThat(result, equalTo("key1=value1#key2=value2#key3=value3"));
}
总结:
Joiner的重要方法:
(1)静态方法 on(),传递分隔符作为参数,作为元素之间的分隔符;跟着调用join方法形成字符串;
(2)appendTo(A appendable, Iterable<?> parts),将某个迭代器拼接到appendable后面,必须由Joiner实例调用;
(3)skipNulls(),跳过迭代器中null,否则报空指针错误;
(4)useForNull(final String nullText),用某个字符串替代迭代器中为null的;
(5)withKeyValueSeparator(String keyValueSeparator),如果是Map类型,调用该方法作为key和value之间的分隔符
3 Splitter
@Test
public void testSplit() {
String ans = "key1=123&key2=678&key3=what";
Map<String, String> map =Splitter.on("&").withKeyValueSeparator("=").split(ans);
System.out.println("split map: " + map);
ans = "123&456&789&asdf";
List<String> list = Splitter.on("&").splitToList(ans);
System.out.println("split list: " + list);
}
输出:
split map: {key1=123, key2=678, key3=what}
split list: [123, 456, 789, asdf]
总结:
Splitter的重要方法:
(1)静态方法on(),传递参数表示以哪个作为分隔符,紧接着调用split(),形成迭代器类型(比如List类型);
(2)静态方法onPattern(String pattern),传递参数表示以哪个正则表达式串作为分隔符;
(3)静态方法fixedLength(final int length),按照固定长度进行拆分,最后一段可能比定长度短,但是不会为空;
(4)omitEmptyStrings(),从结果中自动忽略字符串;
(5)trimResults(),移除字符串的前导空白和尾部空白;
(6)withKeyValueSeparator(String separator),返回MapSplitter并且指定key,value之间的拆分字符串
网友评论