Google Guava学习笔记——基础工具类Joiner的使用
Guava 中有一些基础的工具类,如下所列:
1,Joiner 类:根据给定的分隔符把字符串连接到一起。MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value。
2,Splitter 类:与 Joiner 操作相反的类,是根据给定的分隔符,把一个字符串分隔成若个子字符串。
3,CharMatcher,Strings 类:对字符串通用的操作,例如移除字符串的某一部分,字符串匹配等等操作。
4,其他类:针对Object操作的方法,例如 toString 和 hashCode 方法等。
使用 Joiner 类
我们通常根据指定的分隔符来连接字符串是这样做的。
1 public String buildString(List<String> stringList, String delimiter){ 2 StringBuilder builder = new StringBuilder(); 3 for (String s : stringList) { 4 if(s != null){ 5 builder.append(s).append(delimiter); 6 } 7 } 8 builder.setLength(builder.length() – delimiter.length()); 9 return builder.toString(); 10 }
上面的代码注意的一点就是我们要移除字符串最后的一个分隔符。虽然不难,但是很无聊,下面用 Joiner 类来实现同样的功能:
Joiner.on("|").skipNulls().join(stringList); // 默认使用“|”作为分隔符
是不是很简洁,如果你想替换为 null 的字符串,使用下面的方法:
Joiner.on("|").useForNull("no value").join(stringList);
需要注意的是,Joiner 不仅可以操作字符串,还可以是数组,迭代器,可变参数。Joiner 类是不可变类,因此是线程安全的,它可以处理 static final 的变量,考虑到这一点,我们看下面的代码:
Joiner stringJoiner = Joiner.on("|").skipNulls();//the useForNull() method returns a new instance of the Joiner!stringJoiner.useForNull("missing");stringJoiner.join("foo","bar",null);
在上面的代码中,useForNull()方法没有起作用,null值还是被忽略了。
Joiner 不仅可以返回string ,还有方法能够处理StringBuilder类:
StringBuilder stringBuilder = new StringBuilder(); Joiner joiner = Joiner.on("|").skipNulls(); //returns the StringBuilder instance with the values foo,bar,baz appeneded with "|" delimiters joiner.appendTo(stringBuilder,"foo","bar","baz");
只要是实现了 Appendble 接口的类都可以用 Joiner 来处理。
FileWriter fileWriter = new FileWriter(new File("path")): List<Date> dateList = getDates(); Joiner joiner = Joiner.on("#").useForNulls(" "); //returns the FileWriter instance with the values appended into it joiner.appendTo(fileWriter,dateList);
上面的例子中,我们传递了 FileWriter 实例 和 Data 对象给 Joiner,Joiner 将连接list中所有的数据给 FileWriter 实例并返回。
如上所示,Joiner 是一个非常有用的类,很容易处理日常的一些任务。还有一个特殊的方法,它和 Joiner 的工作方式是一样,但是它连接的是根据指定的分隔符连接 Map 的 key 和 value。
mapJoiner = Joiner.on("#").withKeyValueSeparator("=");
下面的单元测试类展示了如何连接 Map 的 key-value。
Map<String, String> testMap = Maps.newLinkedHashMap();testMap.put("Washington D.C", "Redskins");testMap.put("New York City", "Giants");testMap.put("Philadelphia", "Eagles");testMap.put("Dallas", "Cowboys");String returnedString = Joiner.on("#").withKeyValueSeparator("=").join(testMap);System.out.println(returnedString);
运行结果:Washington D.C=Redskins#New York City=Giants#Philadelphia=Eagles#Dallas=Cowboys
转载于:https://www.cnblogs.com/IcanFixIt/p/4499729.html
Google Guava学习笔记——基础工具类Joiner的使用相关推荐
- Guava中基础工具类Joiner的使用字符串拼接方法 joiner.on
Guava 中有一些基础的工具类,如下所列: 1,Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. 2,Spli ...
- 基础工具类Joiner的使用
Guava 中有一些基础的工具类,如下所列: Joiner 类:根据给定的分隔符把字符串连接到一起.MapJoiner 执行相同的操作,但是针对 Map 的 key 和 value. Splitter ...
- Java学习笔记Day06 工具类及常用算法
第六章 工具类及常用算法 文章目录 第六章 工具类及常用算法 Java语言基础类 Java基础类库 Object类 概述 toString方法 方法摘要 覆盖重写 equals方法 方法摘要 默认地址 ...
- 网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置
事务就是保证多个操作在同一个connection,TxQueryRunner通过JdbcUtils获取连接,而JdbcUtils通过ThreadLocal<Connection>确保了不同 ...
- Guava学习笔记:简化异常处理的Throwables类
Guava学习笔记:简化异常处理的Throwables类 参考文章: (1)Guava学习笔记:简化异常处理的Throwables类 (2)https://www.cnblogs.com/peida/ ...
- 借Google Guava学习发现和开发通用功能模块
如何发现通用的功能模块? 很多人觉得做业务开发没有挑战,实际上,做业务开发也会涉及很多非业务功能的开发,比如我们前面讲到的 ID 生成器.性能计数器.EventBus.DI 容器,以及后面会讲到的限流 ...
- Spring Boot学习笔记-基础(2)
Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...
- Google Map 开发笔记——基础篇(Javascript )
Google Map 开发笔记--基础篇 说明: 一.使用入门: 1.在您需要显示地图的 html 页面嵌入这段 script 2.地图 DOM 元素 3.初始化地图 二.地图画点.线.面 1.标记( ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
最新文章
- 【论文解读】百度提出新冠高风险小区预警算法,AAAI21收录!
- Maven+struts2+spring4+hibernate4的环境搭建
- Spring-Cloud中的 熔断、限流、降级
- http请求消息体和响应消息体
- java direct memory_第一讲 JVM内存四大类型:Heap,Stack,Contant,DirectMemory等
- 苹果6软件服务器验证失败是怎么回事,iPhone6手机出现验证错误怎么办?
- 前端ajax传递json格式参数,后端springboot接收
- 三年级能用计算机吗,三年级上册第6课:我用计算机写作文
- C语言——负数据强制类型转换注意事项
- 人间不值得。在既定的规则面前,除了遵守,还能有什么?
- 沉没成本谬误(一):你是如何被“套牢”的?(二):吃饱撑着也要把东西吃完
- scrapy框架之spider
- 17-【istio】-【流量管理】-【流量管理案例篇】针对TCP流量
- ADC相关参数之---INL和DNL
- 项目实训-中医药知识图谱5
- pba mode ( path based analysis for sta )
- 台式计算机选购,电脑什么配置好 教你如何选购一台好的台式电脑
- 群翔ShopNum1分销系统V8.1升级版,更优更全更盈利
- 客户端缓存(http缓存和本地缓存)
- 【机器学习课程-华盛顿大学】:4 聚类和检索 4.4 MoG混合高斯模型编程测试