guava Joiner
2016-06-18 17:00
344 查看
Joiner用来完成字符串的拼接
如果要List中的元素用一个分隔符(“|”)连接起来。常用做法如下:
使用guava的话是这样的:
可以看出来比以前简洁了很多
skipNulls:忽略null
userForNull:替换null
比如下面的代码,
![](http://img.blog.csdn.net/20160614152338746)
还可以用作
参照:
1、《getting started with google guava》
简单实例
使用guava创建一个包含a,b,c 3个元素的 ArrayListList<String> lists = Lists.newArrayList("a", "b", "c");
如果要List中的元素用一个分隔符(“|”)连接起来。常用做法如下:
StringBuilder ret = new StringBuilder(); for(String ele:lists){ ret.append(ele).append("|"); } ret.setLength(ret.length()-1);//去掉最后一个分隔符"|"
使用guava的话是这样的:
Joiner.on("|").join(lists);//结果是:a|b|c
可以看出来比以前简洁了很多
对于null的处理
如果上面的list中有null元素,使用Joiner.on("|").join(lists)就或抛出NPE(
NullPointerException)异常,这时候可以用
skipNulls或
useForNull方法。
skipNulls:忽略null
userForNull:替换null
List<String> lists = Lists.newArrayList("a", "b", "c",null); Joiner joiner = Joiner.on("|"); //joiner.join(lists); 抛出异常 joiner.skipNulls().join(lists); //忽略null,结果是: a|b|c joiner.useForNull("*").join(lists); //替换null,结果是: a|b|c|*
Joiner不可变性
Joiner实例都是不可变的,所以Joiner实例都是线程安全的,因此我们可以把Joiner实例声明为static final的。每个Joiner的操作都会生成一个新的Joiner实例。
比如下面的代码,
joiner是一个实例,使用
skipNulls方法后又产生一个实例
skipNullJoiner,原来的
joiner实例不会受影响。
Joiner joiner = Joiner.on("|"); Joiner skipNullJoiner=joiner.skipNulls();
Joiner使用对象
joiner不仅可以用来连接Iterable、
Iterator、变长参数、数组
还可以用作
Appendable接口的实例比如(
StringBuilder,
FileWriter)
List<String> lists = Lists.newArrayList("a", "b", "c",null); Joiner joiner = Joiner.on("|").useForNull("*"); StringBuilder sb = new StringBuilder(); joiner.appendTo(sb, lists); System.out.println(sb); //输出 a|b|c|*
MapJoiner
Joiner用来连接线性表的,MapJoiner可以用来连接mapHashMap<String, String> map = Maps.newHashMap(); map.put("a", "11"); map.put("b", "22"); map.put("c", "33"); Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("="); String join = mapJoiner.join(map);//输出 b=22,c=33,a=11
参照:
1、《getting started with google guava》
相关文章推荐
- Android 利用内容观察者实现短信窃听
- android-----XUtils框架之HttpUtils源码分析
- 通过Dmgr管理界面添加Web服务器定义
- ubuntu添加开机自启动程序
- 【知识积累】Entity Framework学习:POCO延迟加载
- 《javascript代码规范整理》
- 4、eclipse开发web的教程
- guava Optional
- Eclipse关联android-support-v7.jar查看源码
- 利用vue.js把静态json绑定bootstrap的table
- ios 开发file's owner以及outlet与连线的理解
- Web移动端Fixed布局的解决方案
- NGINX配置超时时间
- iOS 数字滚动 类似于老 - 虎- 机的效果
- _all、_source、store、index的使用
- 虚拟机中的Linux系统安装JDK
- threading in Python - 简单小例子
- VJass
- IP地址链接数据库失败解决办法
- Linux系统设置WiFi热点